2012-03-02 18 views
1
私は次の警告2取得してい

:)((の$ this - >はMerryParent->が検証された場合、[最後の行でCakePHPのバリデーション:するpreg_match()は:区切り文字はあってはならない英数字またはバックスラッシュ

preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash 

を)]のmerry_parents_controllerのedit()関数を呼び出します。

誰かが間違っていることを教えてもらえますか?また、以下のMerryParentモデルの$ validate配列も含めました。ありがとうございました。

public function edit() { 
    $user_id = $this->Auth->user('id'); //$this->Auth->user provides info abt the currently authenticated user 
    $user=$this->MerryParent->getMerryParents($user_id); 
    //since user doesn't enter username and password here, both the validations is unset to 
    //avoid getting validationErrors for var_dump($this->MerryParent->validationErrors). 
    unset($this->MerryParent->validate['username']); 
    unset($this->MerryParent->validate['password']); 
    //print_r($user_id); 
    //print_r($user); 

    // Form Processing 
    if (!empty($this->data)) { 
     $this->MerryParent->id = $user_id; 
     $this->MerryParent->set($this->data); //before updating data must be set 
         var_dump($this->MerryParent->validationErrors); 

     if ($this->MerryParent->validates()) { 
         .... 

MerryParentsモデル

var $validate=array(
      'initial'=>array(
       'rule'=>'notEmpty', 
       'message'=>'Please select your initial', 
       'on'=>'create' 
       ), 
      'name'=>array(
        'rule'=>array('minLength',3), 
        'required'=>true, 
        'allowEmpty'=>false, 
        'message'=>'Name is required!', 
        'on'=>'create' 
        ), 
      'username'=>array(
       'userRule1'=>array(
         'rule'=>array('minLength',3), 
         'required'=>true, 
         'allowEmpty'=>false, 
         'message'=>'Username is required!', 
         //'on'=> 'update' 
         ), 
       'userRule2'=>array(
         'rule'=>'isUnique', 
         'message'=>'This username has already been taken!', 
         //'on'=>'update' 
         ) 
        ), 
      /*'email'=>array(         
        'rule'=>array('email'), 
        'required'=>true, 
        'allowEmpty'=>false, 
        'message'=>'Valid email address required!' 
        ),*/ 
      'email' => array(
       'isUnique' => array(
        'rule' => 'isUnique', 
        'message' => 'That email has already been taken', 
        'on' => 'create' 
       ), 
       'email' => array(
        //'rule' => array('email', true),//boolean true as second parameter verifies that the host for the address is valid -- to be uncommented once website is uploaded 
        'rule' => array('email'), 
        'message' => 'Your email is invalid' 
       ), 
       'notEmpty' => array(
        'rule' => 'notEmpty', 
        'message' => 'Your email is required' 
       ) 
      ), 
      'password'=>array(
       'passwordRule1'=>array(
         'rule'=>'isUnique', 
         'message'=>'This password has already been taken!', 
         'on'=>'update' 
         ), 
       'passwordRule2'=>array(
         'rule'=>'notEmpty', 
         'required'=>true, 
         'allowEmpty'=>false, 
         'message'=>'password required!', 
         'on'=>'update' 
         ), 
       /*'isMatch' => array(
         'rule' => array('isMatch', 'confirmPassword'), 
         'message' => 'The passwords did not match' 
         )*/ 
       ), 
      'oldPassword'=>array(
         'rule'=>'corretPassword', 
         'message'=>'Invalid password!' 
         ), 
      'newPassword'=>array(
         'rule'=>'isUnique', 
         'message'=>'This password has already been taken!' 
         ),  
      'confirmPassword'=>array(
       'confirmPasswordRule1'=>array(
          'rule'=>'notEmpty', 
          //'required'=>true, 
          'allowEmpty'=>false, 
          'message'=>'confirm password required!' 
          ), 
       'isMatch'=>array(
          'rule'=>'isMatch', 
          'message'=>'The passwords did not match!' 
          ) 
      ), 
      'landline'=>array(
        'rule'=>array('custom','/(0[0-9]{2,4}-[2-9][0-9]{5,7})/'), 
        'required'=>false, 
        'allowEmpty'=>true, 
        'message'=>'Invalid phone number! phone number format: eg 020-22345678 OR 0544-7573758 OR 02345-874567', 
        'on'=>'create' 
        ), 
      'mobile'=>array(
       'rule'=>array('custom','/([89]{1}[0-9]{9})/'), 
       'required'=>true, 
       'allowEmpty'=>false, 
       'message'=>'Invalid mobile number! mobile number format: eg 9876543211', 
       'on'=>'create' 
       ), 
      'address'=>array(
       'rule'=>array('minLength',5), 
       'required'=>true, 
       'allowEmpty'=>false, 
       'message'=>'Please enter your address.', 
       'on'=>'create' 
       ), 
     'state_id'=>array(
       'rule'=>'notEmpty', 
       'message'=>'Please select your state', 
       'on'=>'create' 
       ), 
     'city_id'=>array(
       'rule'=>'notEmpty', 
       'required'=>true, 
       'allowEmpty'=>false, 
       'message'=>'Please select your city', 
       'on'=>'create' 
       ), 
     'postal_code'=>array(
        'rule'=>array('numeric',6), 
        'required'=>true, 
        'allowEmpty'=>false, 
        'message'=>'valid postal code required!', 
        'on'=>'create' 
        ) 
      );//closing bracket for $validate array 

答えて

0

カスタム検証のための正規表現を使用するには、これを使用する必要があります

'rule' => '/([89]{1}[0-9]{9})/', 

詳細情報:

+0

私はあなたのソリューションを試しましたが、私はまだ同じ警告を受けています。 – vaanipala

+3

実際に正規表現には何も問題はありませんでした。私はいくつかの機能を公開していないからです。私は今それを修正しました。 – vaanipala

+0

最後のコメントを追加してくれてありがとう、vaanipala。私はちょうどカスタム検証機能で同じことに遭遇しました。それを公的に変更しました。 – brism

関連する問題