ti-enxame.com

Como passar variáveis ​​via $ .ajax para um controlador

Encontrei algumas partes dos códigos, mas não sei como concluí-lo. Eu preciso passar algumas variáveis ​​via ajax para o controlador para armazená-las na sessão do Joomla. Então, eu tenho o código:

<input type="text" name="id" value="2" />

$('.add').click(function() {
 $.ajax({
  method: "POST",
  url: "index.php?option=com_mycom&task=add&format=raw",
  data: {id:1},
  dataType: 'json'
 }).done(function() {
   alert("Data Saved");
  });
 return false;
});

e o código no controlador:

public function add() {
    $session = JFactory::getSession();
    $value = ???
    $cart = array();
    $cart['item'] = array('id' => $value);
    $session->set('cart', $cart);
}

Como você vê, não sei como obter dados no controlador (e não tenho certeza se os envio corretamente em $ .ajax). E eu realmente preciso de json no meu caso?

2
stckvrw

Você deve usar a classe JInput do Joomla https://docs.joomla.org/Retrieving_request_data_using_JInput

por exemplo.

public function add() {

  // Get Joomla's input object:
  $input = JFactory::getApplication()->input;

  // Get the variable
  $value = $input->get('id');

  $session = JFactory::getSession();
  $cart = array();
  $cart['item'] = array('id' => $value);
  $session->set('cart', $cart);
}
9
Rob Clayburn

Sim, você deseja usar a entrada.

$input = JFactory::getApplication()->input;    
$value = $input->get('id');
1
Mathew Lenning