Bon, donc je suis assez nouveau à CakePHP. Ceci est la configuration:Passer les paramètres à travers le formulaire à contrôleur (CakePHP)
J'ai un modèle (Réservation), et un contrôleur, (ReservationController). J'essaie de fournir une simple fonctionnalité add().
L'URL de requête est: www.example.com/reservations/add/3
Où est l'ID de l'événement cette réservation est pour. Jusqu'ici, tout va bien. Le problème est, la forme est construite comme suit:
<h2>Add reservation</h2>
<?php echo $form->create('Reservation');
echo $form->input('first_name');
echo $form->input('last_name');
echo $form->input('email');
echo $form->input('tickets_student'); echo $form->input('tickets_nstudent');
echo $form->end('Add');?>
Lorsque je clique sur le bouton d'envoi, l'URL de la requête devient simplement www.example.com/reservations/add/, et l'ID d'événement est perdu.
Je l'ai résolu maintenant en saisissant l'identifiant dans le contrôleur, et le rendre disponible à la forme:
// make it available for the form
$this->set('event_id', $eventid);
Et puis, sous la forme:
$form->create('Reservation',array('url' => array($event_id)));
Il fonctionne, mais ça me semble un peu moche. N'y a-t-il pas un moyen plus simple de s'assurer que l'action POST du formulaire est faite à l'url actuelle, au lieu de l'URL sans l'identifiant?
Je suis d'accord avec vous, parce que je suis en utilisant le même formulaire pour ajouter et modifier dans mes projets et ce sera source de confusion, mais si @Forceflow utilise deux actions distinctes, Je crois que ça ira, car il ne passera cette variable que dans l'action add. alors dans l'édition il connaîtra l'événement et il ne sera pas nécessaire d'être passé dans l'url. Mais il y en a trop dans nos hypothèses. :) –