2010-12-01 2 views
0

임베드 된 양식의 양식 포매터를 변경하려고합니다. 이런 식으로 접근 할 수 있습니까?임베디드 양식을위한 다른 양식 포매터?

echo (new sfOuterForm()) 

출력 : - 그들은 봤는데 폼이 내장되어

<li><label>Outer Label</label><input type="text" /></li> 
<li> 
    <table> 
    <tr><td><label>Inner Label</label></td><td><input type="text" /></td></tr> 
    </table> 
</li> 

답변

1

되면, 원래 위젯 스키마 및 유효성 검사기 스키마 아무것도 할 없습니다

class sfOuterForm extends sfForm { 
    public function configure() 
    { 
    $innerForm = new sfForm(); 
    $this->embedForm('inner', $innerForm); 
    $this->getWidgetSchema()->setFormFormatter('list'); 
    $this->getEmbeddedForm('inner')->getWidgetSchema()->setFormFormatterName('table'); 
    } 
} 

난 다음을 기대하고 있습니다 최상위 스키마로 병합되었습니다. 따라서, 당신은 삽입 전에 양식 포매터를 설정해야합니다

$this->getWidgetSchema()->setFormFormatter('list'); 
$innerForm = new sfForm(); 
$innerForm->getWidgetSchema()->setFormFormatterName('table'); 
$this->embedForm('inner', $innerForm); 

그것은 내부에서 무슨 일이 일어나고 있는지 볼 수 sfForm :: embedForm으로 모습 가치가있다.

1

나 혼자 내 질문에 대답 해 드리겠습니다. 관계의 포함 된 양식에 대한 포맷터를 변경하려고 할 때 문제가 발생했습니다. 이 사람이

+0

감사합니다 :) 도움이 될 것입니다

class sfOuterForm extends sfForm { public function configure() { $innerForm = new sfForm(); $this->embedRelation('relationName'); $this->getWidgetSchema()->setFormFormatter('list'); $this->getEmbeddedForm('relationName')->getWidgetSchema()->setDefaultFormFormatterName('table'); } } 

희망을 다음과 같이 나는이 문제를 해결! 내가 "setFormFormatterName"포함 된 양식에 대한했지만 "setDefaultFormFormatterName"작동합니다. – CrashOverwrite

관련 문제