2010-03-01 1 views
0

В action.class.php:Как реорганизовать этот код symfony?

$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 генерируется в предыдущих шагах;

Он выглядит излишним, как его реорганизовать?

ответ

0

Хорошо, что ваш код не является избыточным, пока вы не используете тот же код в действиях с несколькими шагами.
Чтобы сделать его многоразовым, вы можете использовать параметр options в в form constructor и изменить форму следующим образом:

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)); 

Ссылка: sfForm - getOption

 Смежные вопросы

  • Нет связанных вопросов^_^