Как применить правило проверки "совпадений" в Kohana 3.1?
Мне нужно знать, как применять правило проверки "совпадений" в Kohana 3.1. Я пробовал следующее правило в моей модели безуспешно:
'password_confirm' => array(
array('matches', array(':validation', ':field', 'password')),
)
Но это всегда терпит неудачу. Я положил var_dump($array)
в первой строке метода Valid::match (). Я вставляю это ниже:
/**
* Checks if a field matches the value of another field.
*
* @param array array of values
* @param string field name
* @param string field name to match
* @return boolean
*/
public static function matches($array, $field, $match)
{
var_dump($array);exit;
return ($array[$field] === $array[$match]);
}
Он печатает объект типа проверки и, если я делаю var_dump($array[$field])
это печатает null
,
Заранее большое спасибо.
ОБНОВЛЕНИЕ: Также я выяснил с помощью сообщения проверки, что порядок параметров правила должен быть инвертирован в это:
'password_confirm' => array(
array('matches', array(':validation', 'password', ':field')),
)
1 ответ
Ваш синтаксис правильный, но я собираюсь угадать и сказать, что в вашей схеме БД нет столбца "password_confirm", поэтому вы пытаетесь добавить правило в поле, которое не существует.
В любом случае, правильное место для подтверждения пароля - это не ваша модель, а дополнительная проверка, которая передается вашей модели в контроллер при попытке сохранить.
Поместите это в свой пользовательский контроллер:
$user = ORM::Factory('user');
// Don't forget security, make sure you sanitize the $_POST data as needed
$user->values($_POST);
// Validate any other settings submitted
$extra_validation = Validation::factory(
array('password' => Arr::get($_POST, 'password'),
'password_confirm' => Arr::get($_POST, 'password_confirm'))
);
$extra_validation->rule('password_confirm', 'matches', array(':validation', 'password_confirm', 'password'));
try
{
$user->save($extra_validation);
// success
}
catch (ORM_Validation_Exception $e)
{
$errors = $e->errors('my_error_msgs');
// failure
}
Также см. Документацию по проверке ORM Kohana 3.1 для получения дополнительной информации.