Как реорганизовать этот код Symfony? - PullRequest
0 голосов
/ 01 марта 2010

In action.class.php:

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

Это выглядит избыточно, как его реорганизовать?

1 Ответ

0 голосов
/ 01 марта 2010

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

...