2017-09-19 42 views
-1

Je voudrais créer un filtre où la recherche me donnerait seulement les entrées commençant par ce qui est recherché. Par exemple, je recherche un code postal commençant par «92». Avec le filtre actuel, ça me donne "92000", mais aussi "29200" quand je ne veux que le premier. Dans SQl ce serait "où code postal comme $ value%" ou quelque chose comme ça.symfony sonata admin filter "commencer par"

Modifier après les 2 premières réponses:

J'ai essayé le rappel personnalisé. Mais l'exemple est un pour une entité liée affichée comme une case cochée, et je veux juste un "où quelque chose%" sur un champ dans l'entité. Pas de gauche!

Voici mon code jusqu'à présent, mais je reçois « Attention: chaîne illégale de décalage« valeur »

$this->datagrid->add('postCode', 'doctrine_orm_callback', array(
      'callback' => function($queryBuilder, $field, $value) { 
       if (!$value['value']) { 
        return; 
       } 
       $queryBuilder->andWhere('s.postCode like :value'); 
       $queryBuilder->setParameter('value', $value); 

       return true; 
      } 
     )); 

Le champ est « codes postaux » dans l'entité « Formateur »

+0

Qu'avez-vous essayé? Vous devriez inclure ce que vous avez essayé et nous essaierons de vous aider à résoudre le problème. – OptimusCrime

Répondre

0

Vous avez besoin d'une "filtre de rappel personnalisé" pour définir les règles dont vous avez besoin dans le queryBuilder. Il est bien couvert par Sonata documentation on filters.