2012-04-06 7 views
0

Symfony 1.4를 사용하여 주어진 테이블의 모든 행을 동시에 편집 할 수있는 양식을 만들고 있습니다. 이렇게하려면 포함 된 양식을 사용했습니다. 내 솔루션이 작동하지만 내 포함 된 양식에 래퍼를 사용해야하는 이유가 궁금합니다. 나는 setNameFormat의 매개 변수가 추한 종료되는 것을 발견Symfony 1.4의 임베디드 폼 : 왜 래퍼를 사용해야합니까?

class FooCollectionForm extends BaseForm 
{ 
    public function configure() 
    {  
    $wrapperForm = new sfForm(); 
    foreach ($this->getOption('bar') as $bar) 
    { 
     $form = new myForm(); 
     $form->widgetSchema->setNameFormat('foo_collection['.$bar['label'] . '][%s]'); 
     $wrapperForm->embedForm($bar['label'], $form); 
    } 

    $this->embedForm('foo_collection', $wrapperForm); 
    } 
} 

하지만 그것이 작동하는 방식 인 것 같습니다 :

여기 내 코드입니다. 그것에 동의 하시겠습니까? 아니면 더 나은 해결책이 있습니까? '난 아직도 왜 내가 할 수있는 이해가 안 다시 나는이 추하다는 점을 발견하고

<?php foreach ($form->getEmbeddedForm('foo_collection')->getEmbeddedForm() as $subForm): ?> 
    <?php include_partial('form', array('form' => $subForm)) ?> 
<?php endforeach; ?> 

: 내가 수동으로 여기 내 양식의 레이아웃을 짓고 있어요

내가 내 모든 필드를 표시하는 데 사용할해야하는 루프 래퍼 양식을 사용하지 않고 $form->getEmbeddedForm()을 수행하십시오.

는이 같은 루프와 함께 래퍼하지 않고 동일한 양식을하려고 노력 : 그것은 거의 내 입력이 같은 이름과 ID를 가지고있는 사실을 제외하고 노력하고 있습니다

<?php foreach ($form->getEmbeddedForms() as $subForm): ?> 

.

답변

1

setNameFormat의 매개 변수는 못생긴 것이지만 작동하는 것처럼 보입니다. 그것에 동의 하시겠습니까? 아니면 더 나은 해결책이 있습니까?

예, Symfony 및 포함 된 양식은 약간 혼란 스럽습니다.

네 - 더 나은 해결책이 있습니다. 네임 폼을 프레임 워크에 전달해야합니다.

fabien과 ryan의 embedForm()/embedRelation() 함수에 대한 excellent docu, 임베디드 양식의 논리 및 임베디드 양식의 렌더링에 대한 설명이 있습니다.

관련 문제