2013-03-07 1 views
1

Je suis nouveau à cakephp et j'essaie de créer une API très simple où l'utilisateur peut «réserver» un véhicule via une API.Cakephp comment créer une liste déroulante à partir de la table

J'ai trois modèles, vues et contrôleurs, qui sont les véhicules, les clients et les réservations. J'ai implémenté la plus grande partie mais je suis juste coincé sur comment je peux ajouter une réservation en permettant à l'utilisateur de choisir dans une liste déroulante.

Fondamentalement, je veux deux listes déroulantes qui me permettent de sélectionner l'identifiant/nom du client et l'identifiant/nom du véhicule. et les mettre dans la table des réservations.

Ceci est mon contrôleur réservations fonction add

function add() { 
     if($this->request->is('post')) { 
      if($this->Reservation->save($this->data)) { 
       $this->Session->setFlash('The Reservation was successfully added!'); 
       $this->redirect(array('action'=>'index')); 
      } else { 
       $this->Session->setFlash('The Reservation was not added.'); 
      } 
     } 
     $customers = $this->Customers->find('list'); 
     $this->set(compact('customers')); 
     $this->set('title_for_layout','Add Reservation'); 
    } 

Au fond j'ai utilisé un code à partir d'un autre site Web qui devrait créer une liste de clients, mais je reçois une erreur. Aussi parce que le contenu des clients est dans un modèle différent, je ne pense pas que ce soit la mauvaise façon de procéder.

Alors, comment puis-je ajouter une liste déroulante de clients à ma page de réservations.

Répondre

4

Model-noms doivent être singulier, pas pluriel, alors essayez cette

$customers = $this->Customer->find('list'); 

Cependant, vous avez peut-être oublié de charger le modèle 'client' dans votre contrôleur. Si le modèle Reservation a une relation avec Customer (par exemple Reservation belongsTo Customer), il est préférable d'y accéder via l'arborescence Model;

$customers = $this->Reservation->Customer->find('list'); 
$this->set(compact('customers')); 

Pour se débarrasser de la variable intermédiaire, utilisez ceci:

$this->set('customers', $this->Reservation->Customer->find('list')); 
+0

Salut, Merci pour la réponse. Il me donne maintenant cette erreur: - 'Appel à une fonction membre find() sur un non-objet' – user667430

+0

@ user667430 Cela signifierait que votre association 'Reserveration belongsTo Customer' n'a pas été définie. Si vous les associez, la recherche devrait fonctionner. – Oldskool

+0

Salut merci pour votre aide, j'ai réussi à réparer les relations. Ça marche. – user667430

-1

Marque tableau de liste dans le contrôleur.

$role=$this->Modelname->find('list',array('fields'=>'id,name')); 

Marque liste déroulante dans le fichier ctp comme celui-ci.

echo $this->Form->input('role', array('options' => $roles, 'default' => '--Select--')); 
Questions connexes