2012-03-20 44 views

答えて

4

手動でデフォルト値を設定することができます。

$countries = array(
    'Spain', 
    'England', 
    'France' 
); 

$this->widgetSchema['countries'] = new sfWidgetFormChoice(array('choices' => $countries, 'multiple' => true, 'expanded' => true)); 

// Form will render with Spain and England pre-selected 
$this->widgetSchema['countries']->setDefault(array(0,1)); 

をフォームが関連するオブジェクトは新しいものではない場合は、デフォルトが格納された値に基づいてあらかじめ選択されます、あなたがする必要がある場合がありますので、最後の行の周りに$this->getObject()->isModified()チェックを追加します。

+1

この特定の方法はうまくいかなかったが、回避策がありました:$ this-> setDefault( 'countries'、array(0,1))それは注目に値する0と1はiに対応する$ countries配列のndicesこれらのインデックスは文字列でもあります。 – afilina

+0

実際には動作しますが、コードを投稿する前にテストしましたが、これはウィジェットのスキーマの設定によります。この回答が参考になった場合は、同意してください。いずれにせよ、幸運。 –

0

あなたが選択

$this->widgetSchema['example_select_export'] = new sfWidgetFormChoice(array(
             'multiple' => false, 
             'expanded' => false, 
             'choices' => array("csv" => "CSV", "excel" => "Excel", "csv_mac" => "CSV mac") 

           ); 
$choices = array("csv" => "CSV", "excel" => "Excel", "csv_mac" => "CSV mac"); 

とウィジェットを持つフォームを持っている場合あなたはあなたのフォームの呼び出しこの

$this->form->setDefault('example_select_export','csv') 

それとも、ただ好きな場合を作成したアクションのいずれかで設定されているデフォルトすることができますあなたが望む順番で選択肢を並べ替える

関連する問題