Forms 如何重构这个symfony代码?
在action.class.php中:Forms 如何重构这个symfony代码?,forms,symfony1,action,Forms,Symfony1,Action,在action.class.php中: $form = new NewsForm(); $form->setWidget('thumbnail', new sfWidgetFormSelect(array('choices' => $news['images']))); $form->getWidget('summarize')->setDefault($news['summarize']); $form->getWidget('title')->setDef
$form = new NewsForm();
$form->setWidget('thumbnail', new sfWidgetFormSelect(array('choices' => $news['images'])));
$form->getWidget('summarize')->setDefault($news['summarize']);
$form->getWidget('title')->setDefault($news['title']);
其中$news是在前面的步骤中生成的
它看起来是多余的,如何重构它?除非在多个操作中使用相同的代码,否则您的代码不会被重新编译。 要使其可重用,您可以使用中的options参数,并按如下方式更改表单:
class NewsForm extends ... {
public function configure() {
//Whatever you do here
//....
// if a news is set we configure certain fields
if($news = $this->getOption('news', false)) {
$this->setWidget('thumbnail', new sfWidgetFormSelect(array('choices' => $news['images'])));
$this->setDefault('summarize', $news['summarize']);
$this->setDefault('title', $news['title']);
}
}
}
您可以使用以下选项创建表单:
$form = new NewsForm(array(), array('news' => $news));
参考: