3.5.3.4.4 postConditions
Utilisez cette méthode pour transformer des données de formulaire, transmises par POST (depuis les inputs du Helper Form), en des conditions de recherche pour un modèle. Cette fonction offre un raccourci appréciable pour la construction de la logique de recherche. Par exemple, un administrateur aimerait pouvoir chercher des commandes dans le but de connaître quels produits doivent être emballés. Vous pouvez utiliser les Helpers Form et Html pour construire un formulaire rapide basé sur le modèle Commande. Ensuite une action du contrôleur peut utiliser les données postées par ce formulaire pour construire automatiquement les conditions de la recherche :
function index() {
$o = $this->Commande->findAll($this->postConditions($this->data));
$this->set('commandes', $o);
}
function index() {$o = $this->Commande->findAll($this->postConditions($this->data));$this->set('commandes', $o);}
Si $this->data[‘Commande’][‘destination’] vaut "Boulangerie du village", postConditions convertit cette condition en un tableau compatible avec la méthode Model->findAll(). Soit dans notre cas, array("Commande.destination" => "Boulangerie du village").
Si vous voulez utiliser un opérateur SQL différent entre chaque terme, remplacez-le en utilisant le second paramètre :
/*
Contenu de $this->data
array(
'Commande' => array(
'nb_items' => '4',
'referrer' => 'Ye Olde'
)
)
*/
//Trouvons les commandes qui ont au moins 4 items et qui contiennent ‘Ye Olde’
$o = $this->Order->findAll($this->postConditions(
$this->data,
array('>=', 'LIKE')
));
/*Contenu de $this->dataarray('Commande' => array('nb_items' => '4','referrer' => 'Ye Olde'))*///Trouvons les commandes qui ont au moins 4 items et qui contiennent ‘Ye Olde’$o = $this->Order->findAll($this->postConditions($this->data,array('>=', 'LIKE')));
L'ordre dans lequel sont spécifiés les opérateurs est celui des colonnes dans le tableau $this->data. Etant donné que 'nb_item' est le premier, l'opérateur >= s'appliquera donc à ce champ.
Le troisième paramètre vous permet de dire à CakePHP quel opérateur booléen SQL utilisé entre les conditions de recherche. Les chaînes comme "AND", "OR" et "XOR" sont des valeurs possibles.
Enfin, si le dernier paramètre est défini à vrai et que $op est un tableau, les champs non-inclus dans $op ne seront pas inclus dans les conditions retournées.
