2012-03-01 4 views
1

После изучения Miles Jones кекс форум плагина, у меня есть несколько вопросов здесь:CakePHP: правила проверки модели, поля формы, ===

1) является обязательным для каждого поля (которое появляется в валидация модели правила) как поле в таблице базы данных? Я нашел следующие правила валидации в пользовательской модели плагина форума cupcake. oldPassword и newPassword не являются полями в таблице пользователей. Я смущен coz «Я думал, что должен только делать правила проверки полей полей.

public $validate = array(
    'username' => array(
     'isUnique' => array(
      'rule' => 'isUnique', 
      'message' => 'That username has already been taken', 
      'on' => 'create' 
     ), 
     'notEmpty' => array(
      'rule' => 'notEmpty', 
      'message' => 'Please enter a username' 
     ) 
    ), 
    'password' => array(
     'rule' => 'notEmpty', 
     'message' => 'Please enter a password' 
    ), 
    'oldPassword' => array(
     'rule' => array('isPassword'), 
     'message' => 'The old password did not match' 
    ), 
    'newPassword' => array(
     'isMatch' => array(
      'rule' => array('isMatch', 'confirmPassword'), 
      'message' => 'The passwords did not match' 
     ), 
     'custom' => array(
      'rule' => array('custom', '/^[-_a-zA-Z0-9]+$/'), 
      'message' => 'Your password may only be alphanumeric' 
     ), 
     'between' => array(
      'rule' => array('between', 6, 20), 
      'message' => 'Your password must be 6-20 characters in length' 
     ), 
     'notEmpty' => array(
      'rule' => 'notEmpty', 
      'message' => 'Please enter a password' 
     ) 
    ), 
    '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' 
     ) 
    ) 
); 

2) Поле каждого поля должно быть полем в таблице базы данных?

Например, когда я прошу пользователя зарегистрироваться, будут: имя пользователя, адрес электронной почты, пароль и пароль подтверждения. Но подтверждение пароля не обязательно должно быть полем в таблице? Это хорошая практика?

я нашел следующую функцию isMatch в form_app_model.php:

/** 
* Validates two inputs against each other 
* @access public 
* @param array $data 
* @param string $confirmField 
* @return boolean 
*/ 
public function isMatch($data, $confirmField) { 
    $data = array_values($data); 
    $var1 = $data[0]; 
    $var2 = (isset($this->data[$this->name][$confirmField])) ? $this->data[$this->name][$confirmField] : ''; 

    return ($var1 === $var2); 
} 

Может кто-нибудь сказать мне о том, что === в последней строке кода выше?

спасибо.

+1

'' === Читайте здесь http://stackoverflow.com/questions/8768958/logical-operators-php-true- or-false/8768986 # 8768986 –

+1

и no - не каждое поле в валидации должно быть реальным полем базы данных. – mark

+0

Спасибо знак. Я понял. :) – vaanipala

ответ

2

Это означает ровно равный (без преобразования). Например: если y = 25, то y === 25 истинно, а y == '25' истинно, но y === '25' неверно.

Смежные вопросы