2012-12-09 2 views
0

저는 Silex를 사용 중이며 그룹에 속한 일련의 필드가있는 양식을 작성하려고합니다.Silex 하위 양식 모음

아래의 코드와 비슷한 것을 수행 할 수 있습니까? (내 예를 들어 현재 오류를 얻을 나던,하지만 아무것도의 나뭇 가지에 나와 얻을 ..)

을 내 경로에서 :

$builder = $app['form.factory']->createBuilder('form'); 

$tags[] = array('label' => 'Tag A', 'data' => 1); 
$tags[] = array('label' => 'Tag B', 'data' => 2); 

foreach($tags as $key => $tag) { 
    $builder->add('tags', 'collection', array(
    'type' => 'text', 
    'allow_add' => true, 
    'allow_delete' => true, 
    'options' => array(
     'label' => $tag['label'], 
     'constraints' => array(new Assert\NotBlank()), 
     'data' => $tag['data'] 
    ), 
)); 
} 

$form = $builder->getForm(); 
나뭇 가지에서

:

<ul class="tags"> 
    {% for tag in form.tags %} 
    <li>{{ form_row(tag) }}</li> 
    {% endfor %} 
</ul> 

답변

0

나는 천국을 ' 한동안 Silex를 사용했지만 원칙은 Symfony와 동일해야합니다.

그런 루프로 컬렉션을 만들어서는 안됩니다. 기본적으로 각 태그에 대해 여러 개의 콜렉션을 작성하고 있습니다. 대신 모든 태그에 대해 단일 컬렉션을 원합니다. 나는 이것을 테스트하지는 않았지만이 라인을 따라 뭔가가 작동해야합니다 ...

// form variables ... 
$tags[] = array('label' => 'Tag A', 'data' => 1); 
$tags[] = array('label' => 'Tag B', 'data' => 2); 
$data = array('tags' => $tags); 

$builder = $app['form.factory']->createBuilder('form', $data); 
$builder->add('tags', 'collection', array(
    'type' => 'text', 
    'allow_add' => true, 
    'allow_delete' => true, 
    'options' => array(
     'constraints' => array(new Assert\NotBlank()), 
    ), 
));