2009-11-19 92 views
3

我現在用的小部件在Symfony的Select選項中設置默認值?

sfWidgetFormChoice(array (
    'choices' => CountryPeer::getAllCountry(), 
)) 

和驗證作爲

sfValidatorChoice(array (
    'choices' => array_keys(CountryPeer::getAllCountry()), 
)) 

我得到一個選擇元素

<select id="country" name="reg_form[country]"> 
    <option value="1">India</option> 
    <option value="2">Srilanka</option> 
</select> 

我想補充一個選項--Select Countries--默認:

<option value="">--Select Countries--</option> 

這樣它就應該拋出一個所需的錯誤,如果我不選擇任何國家。

+0

請將代碼格式設置爲'code sample'。 – 2009-11-19 11:50:01

回答

5

首先,選項添加到選擇的陣列,而不是到驗證器,所以它會拋出錯誤:

$def_val = array(-1=>"--Select Countries--"); 

$sel_choices = array_merge($def_val,CountryPeer::getAllCountry()); 

sfWidgetFormChoice(array (
    'choices' => $sel_choices, 
)) 

sfValidatorChoice(array (
    'choices' => array_keys(CountryPeer::getAllCountry()), 
)) 

,然後設置「-1」選項爲默認值:

$your_form->setDefault('country', -1); 

應該這樣做。

+0

是啊!它工作並給出無效的錯誤。謝謝你Danii – 2009-11-25 10:38:02

1

您可以設置所需的選項設置爲false

sfValidatorChoice(array ( 'required' => false, 'choices' => array_keys(CountryPeer::getAllCountry()), ))

它應該工作。

+1

由於此字段是必填字段,因此不得爲空,因此必須保持required = true – 2009-11-25 10:40:03