cakephp: правила проверки модели, поле формы, ===

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

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

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);
}

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

Спасибо.


person vaanipala    schedule 01.03.2012    source источник
comment
=== Прочитайте здесь stackoverflow. com/questions/8768958/   -  person Shakti Singh    schedule 01.03.2012
comment
и нет - не каждое поле в проверке должно быть реальным полем базы данных.   -  person mark    schedule 01.03.2012


Ответы (2)


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

person Shree    schedule 01.03.2012

== означает равенство

=== означает идентичный

http://www.techsww.com/tutorials/web_development/php/tips_and_tricks/difference_between_equal_and_identical_comparison_operators_php.php

person Gurpreet Singh    schedule 02.07.2012