0

I'm using Sonata to make a backoffice and at configureFormFields, I want do a query to return some values. The query is well done and returns values when I use var_dump, but at the form I always get "Class does not exist". Can you help me?

Here is the code:

protected function configureFormFields(FormMapper $formMapper)
{
      /* @var $queryBuilder \Doctrine\ORM\QueryBuilder */
    $queryBuilder = $this->getModelManager()
            ->getEntityManager('EBCoreKernelBundle:Campaign\Campaign')
            ->createQueryBuilder();

    $queryBuilder->select('cmp.id, cmp.name')
                 ->from('EBCoreKernelBundle:Campaign\Campaign', 'cmp');

          /* @var $templateList Template[] */
    $templateList = $queryBuilder->getQuery()->execute();

         var_dump($templateList);

    $formMapper
        ->add('name','sonata_type_model',  array('required' => true, 'query' => $queryBuilder));


}
Brian
  • 1,184
  • 2
  • 21
  • 38
peterfigwall
  • 3
  • 1
  • 5
  • What error do you get? I.e. which class does not exist? – Jon Winstanley Nov 22 '13 at 18:04
  • may be problem with `->from('EBCoreKernelBundle:Campaign\Campaign', 'cmp');` this line. use `->from('EBCoreKernelBundle:Campaign', 'cmp');` if your Campaign entity is in Entity folder of EBCoreKernelBundle – bsnrijal Nov 22 '13 at 18:34
  • @bsnrijal that didn't work – peterfigwall Nov 25 '13 at 11:36
  • @JonWinstanley i don't know. It only says that the class does not exist – peterfigwall Nov 25 '13 at 11:37
  • 1
    you are fetching templatelist and i think you want to display template list in formmapper.Try using: `->add('name','sonata_type_model', array('required' => true, 'class'=> 'EBCoreKernelBundle:Campaign\Campaign','property'=> 'Your property name', 'query_builder' => $templateList));` – bsnrijal Nov 25 '13 at 16:28
  • @bsnrijal i found another way to do this with a controller and some extra objects. Thanks anyway – peterfigwall Nov 26 '13 at 16:23

2 Answers2

0

$entity = new \Nnx\AbpBundle\Entity\Truc();

$query = $this->modelManager->getEntityManager($entity)->createQuery('SELECT t FROM Nnx\AbpBundle\Entity\Truc t ORDER BY t.lib ASC')->execute();

0

As documentation:

https://sonata-project.org/bundles/admin/master/doc/reference/form_types.html

query defaults to null. You can set this to a QueryBuilder instance in order to define a custom query for retrieving the available options.

So, let's give it a query builder:

        $queryBuilder = $this->getModelManager()
           ->getEntityManager(Category::class)
           ->createQueryBuilder('c')
           ->select('c')
           ->from('AppBundle:Category', 'c')
           ->orderBy('c.title', 'ASC')
        ;

        $formMapper->add('toto', ModelType::class, array(
           'query' => $queryBuilder
        ))
Thomas Decaux
  • 21,738
  • 2
  • 113
  • 124