2013-01-24 43 views
4

我正在cakephp1.3中工作。我必須在model中使用cakephp驗證來驗證我的表單。我添加了一個正則表達式來限制特殊字符條目。cakephp驗證和正則表達式

我的代碼編寫如下:

var $validate = array(
     'name' => array(
      'unique'=>array(
       'rule'  => 'isUnique', 
        'message' => 'Already taken', 
      ), 
      'pattern'=>array(
       'rule'  => '/^[a-z]$/i', 
        'message' => 'Only letters allowed', 
      ), 
      'empty'=>array(
       'rule' => 'notEmpty', 
       'message' => 'This field cannot be left blank', 
      )) 
    ); 

規則 '獨一無二' 是行不通的。它在我在腳本中添加'模式'規則之前工作正常。問題是什麼?我試圖把我上面提到的規則的順序,我認爲可能有一些定位問題,但沒有發生任何事情。

plz幫助我..

回答

4

替換$用+:

var $validate = array(
    'name' => array(
     'notempty' => array(
      'rule' => array('notempty'), 
      'message' => 'This field cannot be left blank', 
     ), 
     'unique'=>array(
      'rule' => 'isUnique', 
      'message' => 'Already taken' 
     ), 
     'pattern'=>array(
      'rule'  => '[a-zA-Z]+', 
      'message' => 'Only letters allowed', 
     ), 
    ), 
); 
+1

「/ i」是什麼? 'a-zA-z'是不是不區分大小寫? – mgPePe

+0

是的,你是對的,這是多餘的。 [a-zA-Z] +它只是好的 –

1

你需要精確的字符可以多久。後«]»添加這樣的數據:

  • *爲0以上
  • + 1或更多
  • ?爲0或1
  • {2,9}爲最多隻有

http://www.php.net/manual/en/regexp.reference.meta.php

限制
  • {2,}最少僅
  • {0,1024}之間的計數數

    示例:

    'rule'  => '/^[a-z]+$/i', 
        'rule'  => '/^[a-z]{3-255}$/i',