Ciao a tutti,
Sto cercando di costruire la form dell'entità book in relazione con category.
Mi sono arenato nel repository con query builder per ottenere l'array delle categorie da passare al metodo createFormBuilder.
Vi illustro il panorama per vedere se è anche la strada giusta :
Metodo createAction() di Book :
Codice PHP:
public function createAction(Request $request)
{
$book = new Book();
$category = $this->getDoctrine()
->getRepository('AcmeDemoBundle:Category')
->findAllReturnArray();
echo $category;exit();
$form = $this->createFormBuilder($book)
->add('title', 'text')
->add('isbn', 'text')
->add('author', 'text')
->add('description', 'textarea')
->add('price', 'text')
->add('categoryId', 'choice', array('choices' => $category,
'required' => false,
)
)
->add('save', 'submit', array('label' => 'Crea libro'))
->getForm();
$form->handleRequest($request);
if ($form->isValid()) {
//inserisco manualmente l'autore per semplificare l'esempio
$em = $this->getDoctrine()->getManager();
//$category = $em->getRepository('AcmeDemoBundle:Category')->find(1);
//$book->setCategoryId($category);
$em->persist($book);
$em->flush();
return $this->redirect($this->generateUrl('_book'));
}
return $this->render(
'AcmeDemoBundle:Book:create.html.twig',
array(
'form' => $form->createView()
)
);
}
Io dovrei ottenere un array da passare al metodo add choice per poter costruire la mia select option.
Per fare ciò mi pare di aver capito che la strada migliore sia creare un metodo apposta nel repository :
Metodo findAllReturnArray entity Category :
Codice PHP:
public function findAllReturnArray()
{
try {
$query = $this->createQueryBuilder('c')
->select('c')
->from('Category', 'c')
->getQuery()
->getResult(Query::HYDRATE_ARRAY);
return $query;
} catch (\Doctrine\ORM\NoResultException $e) {
return null;
}
}
Solo che nn c'è verso di costruire questa query anche da documentazione doctrine non riesco a capire come usare il metodo query builder.
Ottengo il seguente errore :
[Semantical Error] line 0, col 49 near 'Category c': Error: Class 'Category' is not defined.
Sia la tabella che l'entità ci sono e le uso con successo tramite i metody getEntityManager presenti nel repository book (Non so se questa ultima info può essere d'aiuto).
Grazie mille a tutti