2016-04-13 15 views
0

私はcakephp v2.3に取り組んでいます。私は$this->User->validatesによる検証データですが、値があっても常にfalseを返します。ここでcakephpでのデータの有効性確認

は私の検証ルールは

public $validate = array(
     'first_name' => array(
      'notEmpty' => array(
       'rule' => 'notEmpty', 
       'message' => 'This field cannot be left blank.', 
       'last' => true, 
       'required' => true, 
      ), 
      'size' => array(
       'rule' => array('maxLength', 50), 
       'message' => 'This field must be no larger than 50 characters long.' 
      ), 
     ), 
     'last_name' => array(
      'notEmpty' => array(
       'rule' => 'notEmpty', 
       'message' => 'This field cannot be left blank.', 
       'last' => true, 
       'required' => true, 
      ), 
      'size' => array(
       'rule' => array('maxLength', 50), 
       'message' => 'This field must be no larger than 50 characters long.', 
       'allowEmpty' => true, 
      ), 
     ), 

     'email' => array(
      'notEmpty' => array(
       'rule' => 'notEmpty', 
       'message' => 'This field cannot be left blank.', 
       'last' => true, 
       'required' => true, 
      ), 

      'checkMail' => array(
       'rule' => 'checkMail', 
       'message' => 'Please provide a valid email address.', 
       'last' => true, 
      ), 
      'isUnique' => array(
       'rule' => 'isUnique', 
       'message' => 'Email address already in use.', 
       'last' => true, 
      ), 
     ), 
     'password' => array(
      'rule1' => array(
       'rule' => array('minLength', 6), 
       'message' => 'Passwords must be at least 6 characters long.', 
       'required' => true, 
      ), 

     ), 
     'verify_password' => array(
      'rule' => 'validIdentical', 
     ), 
     'current_pass' => array(
      'notEmpty' => array(
       'rule' => 'notEmpty', 
       'message' => 'This field cannot be left blank.', 
       'last' => true, 
      ), 
      'match' => array(
       'rule' => 'validICurrent', 
      ) 
     ), 
     'gender' => array(
      'notEmpty' => array(
       'rule' => 'notEmpty', 
       'message' => 'This field cannot be left blank.', 
       'last' => true, 
      ), 
     ), 
     'mobile' => array(
      'notEmpty' => array(
       'rule' => 'notEmpty', 
       'message' => 'This field cannot be left blank.', 
       'last' => true, 
       'required' => true, 
      ), 
      'numeric' => array(
       'rule' => 'numeric', 
       'message' => 'Please enter valid phone numbers.', 
      ) 
     ), 
     'image' => array(
      'SizeLimit' => array(
       'rule' => array('isUnderPhpSizeLimit', false), 
       'message' => 'File exceeds upload filesize limit', 
      ), 
      'FormSizeLimit' => array(
       'rule' => array('isUnderFormSizeLimit', false), 
       'allowEmpty' => true, 
       'message' => 'File exceeds form upload filesize limit' 
      ), 
      'CompletedUpload' => array(
       'rule' => array('isCompletedUpload', false), 
       'message' => 'File was not successfully uploaded' 
      ), 
      'ValidExtension' => array(
       'allowEmpty' => true, 
       'rule' => array('isValidExtension', array('gif', 'png', 'jpg', 'jpeg'), false), 
       'message' => 'File does not have a gif, png, ,jpg and jpeg extension' 
      ) 
     ), 
    ); 

であり、これは私が

if ($this->request->is("post")) { 
     if (!empty($this->request->data)) { 

      if (!$this->User->validates($this->request->data)) { 
       $this->Session->setFlash(__('The Information could not be saved. Please, try again.'), 'message', array('class' => 'danger')); 
       $this->redirect(Router::url('/', true) . 'sign-up/'); 
      } 
     } 

私は

die(debug($this->User->invalidFields())); 

をしようとすると、それは

array(
    'password' => '*****', 
    'last_name' => array(
     (int) 0 => 'This field cannot be left blank.', 
     (int) 1 => 'This field cannot be left blank.' 
    ), 
    'email' => array(
     (int) 0 => 'This field cannot be left blank.', 
     (int) 1 => 'This field cannot be left blank.' 
    ), 
    'mobile' => array(
     (int) 0 => 'This field cannot be left blank.', 
     (int) 1 => 'This field cannot be left blank.' 
    ) 
) 
を返しますを検証しています方法です

我々はモデルでこの種の問題の原因となりますいくつかの時間をデータを設定しない場合、これは私が

Array 
(
    [User] => Array 
     (
      [role_id] => 2 
      [first_name] => kapil 
      [last_name] => sharma 
      [email] => [email protected] 
      [password] => [email protected] 
      [verify_password] => [email protected] 
      [mobile] => 1234567890 
      [gender] => Male 
      [image] => Array 
       (
        [name] => Screenshot_61.png 
        [type] => image/png 
        [tmp_name] => /tmp/phppYBJQF 
        [error] => 0 
        [size] => 50611 
       ) 
     ) 
) 

答えて

0

あなたの検証を渡していたデータは、私には罰金だ。しかしれます。

検証の前に次の行を追加してください。

$this->User->set($this->request->data); 

だから、コードはそれが動作

$this->User->set($this->request->data); //set data in model 

if (!$this->User->validates()) { 
    $this->Session->setFlash(__('The Information could not be saved. Please, try again.'), 'message', array('class' => 'danger')); 
    $this->redirect(Router::url('/', true) . 'sign-up/'); 
} 
+0

おかげのようになります。 :) –

関連する問題