Задать вопрос

Валидация, вывод стандартных фраемворковских ошибок, как заменить их?

Всем привет, смена пароля на сайте, делал не я, до этого программист.

Хочу с актиона убрать фраемворковские ошибки, как можно на прямую вписать текст вывода ошибок в актионе.
На данный момент выводит ошибки стандартные фраемворковские 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 символов');
        }
      }
  • Вопрос задан
  • 32 просмотра
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы