Всем привет, смена пароля на сайте, делал не я, до этого программист.
Хочу с актиона убрать фраемворковские ошибки, как можно на прямую вписать текст вывода ошибок в актионе.
На данный момент выводит ошибки стандартные фраемворковские messages - validation.php
Можно было конечно заменить там текст, но там стандартные поля, в которых текст может срабатывать для многих полей, я пытался новое сделать, но оно не срабатывало.
Фраемворк ko7, kohana, но суть думаю не в этом какой фраемворк.
Хочу заменить вывод ошибок, то есть выводить не с файла, а как-то на прямую прям в актионе вписать, подскажите как реализовать.
Актион по смене пароля. (реализован так)
public function action_retypepassword()
{
$token = Arr::get($_REQUEST, 'token', '');
if (!is_string($token))
$token = '';
else
$token = trim($token);
if (!preg_match('/^[0-9a-f]{32}$/', $token))
throw new http_exception_404();
$tokenExists = ORM::factory('User')->where('remember_pass_token', '=', $token)->count_all();
if (!$tokenExists)
throw new http_exception_404();
if ($this->request->method() === request::POST) {
$data = Arr::extract($_POST, ['password', 'password_confirm']);
foreach ($data as &$row) {
if (!is_string($row))
$row = '';
else
$row = trim($row);
}
$valid = Validation::factory($data)
->rule('password', 'not_emptyp')
->rule('password', 'min_length', [':value', 6])
->rule('password_confirm', 'not_emptyp')
->rule('password_confirm', 'matches', [':validation', 'password', 'password_confirm']);
$errors = [];
if (!$valid->check())
$errors = $valid->errors('');
if (!count($errors)) {
$user = ORM::factory('User')->where('remember_pass_token', '=', $token)->find();
$user->password = $data['password'];
$user->remember_pass_token = DB::expr('NULL');
$user->save();
$success = true;
}
}
$this->template->content = View::factory('index/regaut/retypePassword', [
'token' => $token,
'errors' => isset($errors) ? $errors : [],
'success' => isset($success) ? $success : false,
]);
}
Вот эти поля берут текст ошибок из messages - validation.php
->rule('password', 'not_emptyp')
->rule('password', 'min_length', [':value', 6])
->rule('password_confirm', 'not_emptyp')
->rule('password_confirm', 'matches', [':validation', 'password', 'password_confirm']);
Вообщем как можно заменить эти поля и не брать текст валидации с файла фраемворковского.
Хотелось бы прям там в коде вписать текст который надо выводить при какой либо ошибке.
Я пытался добавить туда: (но выдает ошибку).
if (empty($data['password'])) {
throw new http_exception_404('Введите новый пароль');
}
Или вот так, тож не срабатывает.
if (!empty($data['password'])) {
if (mb_strlen($data['password']) < 5 or mb_strlen($data['password']) > 32) {
throw new Exception('Пароль должен быть не менее 5 и не более 32 символов');
}
}