2010-03-01 6 views
0

Dans action.class.php:Comment refactoriser ce code 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']); 

Lorsque $news est généré dans les étapes précédentes;

Il semble redondant, comment refactoriser?

Répondre

0

Eh bien votre code n'est pas redunant jusqu'à ce que vous utilisez le même code dans les actions mutliple.
Pour la rendre réutilisable, vous pouvez utiliser le paramètre options dans le la form constructor et changer la forme comme suit:

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']); 
     } 
    } 
} 

Le vous pouvez créer le formulaire avec:

$form = new NewsForm(array(), array('news' => $news)); 

Référence: sfForm - getOption

Questions connexes