2010-11-25 20 views
1

Je veux stocker les entrées de formulaire dans une table qui va stocker ce que recherchaient mes utilisateurs, puis exécuter le code sur les résultats du formulaire.Insérer/enregistrer des entrées de recherche/formulaire client dans une table séparée avant d'exécuter le code- CakePHP

J'ai essayé de faire:

$ this-> Recherche-> create();

$ this-> Recherche-> enregistrer ($ this-> données); Mais je ne pense pas qu'il m'a plu d'utiliser un modèle qui n'appartient pas à ce contrôleur (je suppose que cela ne suit pas la convention et utilise pleinement CakePHP). L'autre idée que j'avais était de créer un nouveau search_controller, puis de lancer $ this-> data via le code ci-dessus et de rediriger vers le contrôleur Trips mais il semble que ce ne soit pas la meilleure façon de le faire non plus.

Des idées sur la meilleure façon de procéder?

En procédural PHP, je voudrais juste faire une requête INSERT avant.

Merci pour l'aide!

+0

Quel type de données avez-vous passé à l'action? – Nigel

+0

Salut Nigel, fyi, Je veux juste stocker le prix et l'origine de l'aéroport de la recherche, de sorte que je peux utiliser les historiques de recherche plus tard pour faire des changements si nécessaire. – JohnAllen

Répondre

1

Je pense qu'avoir un modèle qui n'appartient pas au contrôleur spécifique n'est pas une si mauvaise idée.

vous pouvez réellement mettre cette logique dans le beforeFilter() du modèle de voyages comme ça:

class Trip extends AppModel { 
    //.... 
    function beforeFind(){ 
     if($this->data){ 
     $search = ClassRegistry::init('Search'); //adding instance of Search model 
     $search->save($this->data); //save the data 
     //Do extra things if needed 
     } 
    } 
    //.... 
} 

De cette façon, vous n'avez pas le modèle « étranger » dans vos contrôleurs, et d'utiliser la recommandation « Fat Modèles, contrôleurs Skinny ":)

+0

Ce qui précède n'a pas fonctionné pour moi mais je veux augmenter mon taux de réponse ainsi .......... – JohnAllen