2012-04-04 119 views
0

我在名爲的小鎮中有一個下拉選項。已獲取的值將從數據庫表townId中下拉。現在我想檢查用戶是否沒有從下拉列表中選擇任何選項並直接進入保存按鈕,那麼它應該顯示「請在下拉列表中選擇您的選擇」。該窗體名爲大學下拉驗證

我想這個代碼在這裏:

if(Zend_Form_Element_Submit) 
     { 
      if($$townid=='') 
       { alert("U Must Choose Town Name Here"); 

       } 
      else 
       { 
        $submit = new Zend_Form_Element_Submit('Save'); 
        $submit->setDecorators($this->submitDecorators) 
        ->setAttrib('class','button slategray'); 
       } 

     } 

內部模型 - > university.php有一些動作的下拉我沒有得到確切:

public function setOptions(array $options) 
{ 
    $methods = get_class_methods($this); 
    foreach ($options as $key => $value) { 
     $method = 'set' . ucfirst($key); 
     if (in_array($method, $methods)) { 
      $this->$method($value); 
     } 
    } 
    return $this; 
} 

在我編輯form-> university之前(保存代碼已經存在)

$submit = new Zend_Form_Element_Submit('Save'); 
    $submit->setDecorators($this->submitDecorators) 
     ->setAttrib('class','button slategray'); 
       } 

在此先感謝。

+0

做法是非常錯誤的。你不會像'if(Zend_Form_Element_Submit)'那樣做。有些函數是由[zend](http://framework.zend.com/manual/en/zend.form.quickstart.html)提供的名爲isValid()的函數,它允許你檢查你的表單是否有效。爲此你必須添加驗證器(類似於你的情況中的isRequired())來形成元素。沒有冒犯,但我真的認爲你應該在提問之前自己做一些研究(這也是基於你之前的問題)。請參閱手冊。 – 2012-04-05 10:31:16

回答

-2

在asp.net

<asp:DropDownList ID="ddlusertype" runat="server" CssClass="dropdown" ></asp:DropDownList> 
<asp:CompareValidator ID="CompareValidator2" runat="server" ControlToValidate="ddlusertype" ErrorMessage="select" Font-Size="XX-Small" Operator="NotEqual" Type="Integer" ValueToCompare="0"></asp:CompareValidator> 
+0

謝謝你的code.i將在zend框架中嘗試這個工作 – 2012-04-05 12:39:52

0

要與Zend框架的形式正常工作,我要推薦試試這個方法:

通過

class Form_User extends Zend_Form 

自動延長Zend_Form類創建一個表單您可以訪問容器以管理此表單中的所有元素,併爲您提供isValid()方法,以便您驗證LL你的表單元素在一次到populate()方法,讓你將數據提供給您的形式編輯

在你的新類(Form_User),您可以定義在init()方法所有窗體屬性和元素。

public function init() 
{ 
    $this->setName('user') 
    ->setAttrib('id', 'user'); 

    $username = new Zend_Form_Element_Text('username'); 

    $town = new Zend_Form_Element_Select('town'); 
    $town->addMultioptions(array(...)); 

    $submit = new Zend_Form_Element_Select('submit'); 

    $this->addElements(array($username, $town, $submit)); 
} 

這些元素可以用一個標籤,說明,一些驗證,一些過濾器等進行定製

如果你想使一個元素強制性您可以將Required屬性設置爲true

$town->setRequired(true); 

爲了驗證表單提交已cliqued後,你可以做的只是爲(假設你在控制器中做到這一點):

$form = new Form_User(); 
$postData = $this->getRequest()->getPost(); 
$form->isValid($postData); 

這將檢查所需的字段以及執行​​任何驗證器,你已經設置了這些diverses元素。

如果一切正常,它將返回true,如果有錯誤,則返回false。如果再次出現錯誤,則會在每個錯誤字段旁邊自動顯示錯誤消息。

如果你想設置你的表單元素的選項的值,當你初始化你的表格,你可以傳遞一個配置數組是這樣的:

$form = new Form_User(array('townListOptions' => array(...)); 

相關的方法setTownListOptions將自動被調用,並會收到數組(或其他任何對象)。

我可以解釋進一步東西約形式,但作爲@Rohan在他的評論中說,你正在服用RTM