2011-07-13 26 views
3

對於我的學校項目,我嘗試在Zend中創建一個表單。Zend Framework:設置首字母爲首都的驗證器

我想插入一個Validator,第一個字母必須是大寫字母。

我應該在這段代碼中改變這個工作嗎?

 $voornaam = $this->createElement('text', 'voornaam'); 
    $voornaam->setLabel('Voornaam:') 
      ->setAttrib('size', 50)->addValidator('StringLength', false,array(2,30)) 
       ->setRequired(true); 

如果有人能幫助我,請提前致謝!

+0

恐怕沒有這樣的默認驗證程序。您將不得不創建您自己的驗證器類並將其添加到您的表單元素。 –

回答

3

也許這個自定義的驗證會有所幫助:

class My_Validate_FirstCapital extends Zend_Validate_Abstract { 

    const CAPITAL = 'capital'; 

    protected $_messageTemplates = array(
     self::CAPITAL => "First letter is not capital" 
    ); 

    public function isValid($value, $context = null) {    

     if ($value != ucfirst($value)) { 
      $this->_error(self::CAPITAL); 
      return false; 
     } 

     return true; 
    }  
} 

我沒有測試,但應該工作。

另一種方式是使用Zend_Validate_Regex,例如,

//match first capital letter 
$validator = new Zend_Validate_Regex(array('pattern' => '/^[A-Z]/')); 
// and add it to your element, ->addValidator($validator) 
+0

我試過第一個答案,因爲這將是最好的解決方案。我把它放在應該使用它的Class上。填寫我的表單並提交時,我沒有收到任何錯誤。我應該做些什麼才能使它工作? Zend_Validate_Regex解決方案的作用類似於魅力 – JorritK

+0

@JorritK。你創建一個新的驗證器'$ v = new My_Validate_FirstCapital();'然後將它添加到你的元素中(就像Zend_Validate_Regex一樣)。 – Marcin

+0

工程絕對好,我還不能投票,但儘快我會。非常感謝! :D – JorritK

0

您可以隨時使用正則表達式驗證器來處理這樣的事情。我很忙,所以請隨時介入並提供完整的代碼示例。

噢,有人剛剛做