Wyświetlam tabelę html dla przefiltrowanego zbioru encji i chcę wyświetlić pole wyboru w każdym wierszu jako część formularza, który doda wybrane obiekty do sesji var.Utwórz formularz z polem wyboru dla każdej jednostki w kolekcji doktryn
Myślę, że każde pole wyboru powinno mieć identyfikator podmiotu jako jego wartość, a otrzymam tablicę identyfikatorów z danych pola formularza (ok, więc wartość powinna być pośrednim odnosnikiem jednostki, ale ze względu na prostotę).
Próbowałem już utworzyć formularz typu z jednym polem typu obiektu, zmapowany do właściwości id jednostki i osadzony w innej formie Typ, który ma pole typu kolekcji.
class FooEntitySelectByIdentityType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('foo_id', 'entity', array(
'required' => false,
'class' => 'MeMyBundle:FooEntity',
'property' => 'id',
'multiple' => true,
'expanded' => true
));
}
# ...
i
class FooEntitySelectionType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('identity', 'collection', array(
'type' => new FooEntitySelectByIdentityType,
'options' => array(
'required' => false,
'multiple' => true,
'expanded' => true,
'attr' => array('class' => 'foo')
),
));
}
# ...
w kontrolerze forma jest utworzony ze zbiorem jednostek jako danych wyjściowych
$form = $this
->createForm(
new \Me\MyBundle\Form\Type\FooEntitySelectionType,
$collection_of_foo
)
->createView()
;
Gdy postać staje się nie pojedyncza etykieta pole tożsamości, ale bez widżetów.
Czy w ten sposób można w ogóle używać pól encji i typów kolekcji? Jeśli tak, co mogę zrobić źle?
to działa! wadą tej całej metody jest to, że '$ form-> getData()' zwraca tablicę zawierającą zbiór obiektów zamiast zwykłych liczb całkowitych, ale przypuszczam, że wadą jest to, że nie może być żadnych nieprawidłowych identyfikatorów zapisanych w sesji. dzięki @jah! – jah
Należy pamiętać, że to podejście nie działa, jeśli spróbujesz użyć ciągów jako identyfikatorów.'EntityChoiceList' następnie utworzy indeksy oparte na liczbach całkowitych dla dzieci i wywołanie' form_widget' spowoduje zgłoszenie wyjątku. :( – althaus
Występuję również w tym problemie.Czy istnieje prostszy sposób na rozwiązanie tego prostego problemu? –