Ecco un esempio di form creato in funzione di entity estratte dal database.
Ipotizzando di avere un database con delle voci e voler creare un checkbox distinto per ogni voce.
$element = $this->getDoctrine()
->getRepository('AcmeDemoBundle:Elements')
->find($id);
$formBuilder = $this->createFormBuilder();
for($i = 0; $i < count($element); $i++){
$formBuilder->add($element[$i]->getId(), 'checkbox', array(
'label' => $element[$i]->getId(),
'required' => false,
));
}
$formBuilder->add('save', 'submit');
$form = $formBuilder->getForm();
return $this->render('AcmeDemoBundle:Demo:index.html.twig', array(
'form' => $form->createView()
));
L'esempio fatto è abbastanza inutile visto che converrebbe fare in manierà più pulita così:
->add('element', 'entity', array('label' => 'Element',
'class' => 'AcmeDemoBundle:Elements',
'property' => 'name',
'required' => true,
'multiple' => true,
'expanded' => true
))
Oppure ancora
$repository = $this->getDoctrine()->getRepository('AcmeUserBundle:User');
$query = $repository->createQueryBuilder('p')
->where('p.roles LIKE :roles')
->setParameter('roles', '%"ROLE_ADMIN"%')
->getQuery();
$element = $query->getResult();
$formBuilder = $this->createFormBuilder();
$users = array();
for($i = 0; $i < count($element); $i++){
$users = array($element[$i]->getId() => $element[$i]->getUsername());
}
$formBuilder->add('User', 'choice', array(
'choices' => $users,
'required' => false,
));
$formBuilder->add('save', 'submit');
$form = $formBuilder->getForm();
P.S.
Non so bene perché, ma facendo copia incolla di questo codice sul mac, utilizzando Sublime Text come editor, tutti gli spazi bianchi risultano errori, quindi attenzione, gli "errori fantasma" che verranno segnalati sono solo gli spazi che avete copiato. Toglieteli per risolvere il problema.
Nessun commento:
Posta un commento