web-dev-qa-db-fra.com

Comment passer des variables via $ .ajax à un contrôleur

J'ai trouvé des portions de codes mais je ne sais pas comment les compléter. J'ai besoin de transmettre certaines variables via ajax au contrôleur afin de les stocker dans la session Joomla. J'ai donc le code:

<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;
});

et le code dans le contrôleur:

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

Comme vous le voyez, je ne sais pas comment obtenir des données dans le contrôleur (et je ne suis pas sûr de les envoyer correctement dans $ .ajax). Et ai-je vraiment besoin de JSON dans mon cas?

2
stckvrw

Vous devez utiliser la classe JInput de Joomla https://docs.joomla.org/Retrieving_request_data_using_JInput

par exemple.

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

Oui, vous voulez utiliser l'entrée.

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