Am un Entity (Priority). Valorile posibile sunt stocate in baza de date si sunt incarcate cu ajutorul doctrine fixtures.
Asadar am 3 valori : low / medium / high
Acum, pentru a afisa in formular valorile utilizez :
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
// ... celelalte elemente ale formularului
->add('priority', 'entity', array(
'class' => 'CompanyTaskBundle:TaskPriority',
'expanded' => TRUE,
))
;
}
si in twig :
{{ form_row(currentEntityForm.priority) }}
Pana aici toate bune si frumoase. Optiunile se afiseaza asa cum trebuie.
Problema mea este ca vreau ca valoarea “low” sa fie selectata by default.
O prima idee a fost de a adauga in Entity o proprietate isSelected si sa ma bazez pe asta pentru a afisa valoarea “by default”. Problema aici ar fi ca in partea de Twig ar trebui sa ma apuc sa rescriu generatorul de radio buttons pentru a tine cont de aceasta noua proprietate si mi se pare o “solutie” cam nepotrivita.
Postul meu n-o sa te ajute cu nimic. Vreau doar sa zic:
Lumea care foloseste generatoare de formulare isi merita toate problemele care vin cu ele. Nu va doresc decat sa lucrati dupa cineva care a folosit asa ceva sa vedeti cum e. Daca esti in cazul din urma, I feel for you man.
Nu știu dacă doar mi s-a părut, dar parcă mai devreme era un comentariu despre cei ce folosesc generatoare de formulare care-și merită soarta (de la @AdrianBasalic ?) cu care eram întru totul de acord!
Deasemenea, aș mai adăuga că urăsc îmbârligătura care este Symfony, cu toate clasele și interfețele ei. (Dacă puteau, cred c-ar fi creat o clasă care să pună punctul pe “i”)
Dar, ca să fiu și un pic constructiv, vezi dacă asta te-ajută:
Da, ai dreptate eferitor la generatoarele de formulare
Acum revenind la problema - am uitat sa specific un mic-mare aspect - faptul ca treaba e putin mai complicata pentru ca formularul e tratat intr-un bundle parinte si nu prea am acces direct la elementele lui in controller.
De aceea solutia trebuie sa fie in FormType sau direct in partea de Twig.
Acum incerc sa folosesc FormType ca service si sa ii injectez entity_manager-ul, urmand ca apoi sa il folosesc in el. Nu mi se pare deloc o solutie eleganta, dar sa vad daca merge…
Mno, atata timp cat autorul threadului nu considera ca discutia despre generatoare e offtopic, ii dau undelete la postul lui @AdrianBasalic (cu care intamplator sunt si eu intru totul de acord ).
AbstractType mai are niste metode care te ajuta sa modifici formularul dupa nevoi: buildView si finishView, si nu mai trebuie sa suprascrii generator din twig (pentru ca nu adagi o proprietate noua, doar modifici una existenta).