Ну, ваш код не избыточен, пока вы не используете тот же код в нескольких действиях.
Чтобы сделать его многоразовым, вы можете использовать параметр 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));
Ссылка: sfForm - getOption