Сообщение об ошибке при проверке формы с использованием метода модели для пользовательского правила

1

Мне нужно отобразить сообщение об ошибке для пользовательского правила проверки, но я не могу этого сделать.

Это правило проверки:

    $config = array(
             ....,
            array(
                    'field' => 'general_sales_subaccount',
                    'label' => 'General Sales Subaccount',
                    'rules' => array(
                            'required',
                            'numeric',
                            array(
                                    $this->subaccounts_model,
                                    'is_valid'
                            )
                    ),
            )
    );

    $this->form_validation->set_rules($config);

И теперь это ссылочный метод модели:

    public function is_valid($subaccount)
    {
        $subaccount_num_digits = $this->preferences->get('subaccount_num_digits');

        if (strlen($subaccount) != $subaccount_num_digits ) {
            $this->form_validation->set_message('is_valid', "The number of digits in %s doesn't match the length set to " . $subaccount_num_digits);
            return false;
        }       

        return true;
    }

Правило, похоже, работает, но оно отображает это сообщение об ошибке:

Не удалось получить доступ к сообщению об ошибке, соответствующему имени вашего поля (функция Anonymous).

Есть идеи?

  • 0
    Я почти уверен, что, как правило, это невозможно сделать с помощью модельного метода.
  • 0
    Это очень плохо. Спасибо за информацию.
Теги:
codeigniter
codeigniter-3

1 ответ

1

Вы не можете получить сообщение об ошибке, потому что вы не настраиваете имя функции. Вы можете изменить свою функцию правила, как показано ниже:

$config = array(
         ....,
        array(
                'field' => 'general_sales_subaccount',
                'label' => 'General Sales Subaccount',
                'rules' => array(
                        'required',
                        'numeric',
                        array( //you may get all in another array
                          'is_valid', // and tell codeigniter your functions name
                          array(
                                $this->subaccounts_model,
                                'is_valid'
                        )
                    )
                ),
        )
);

$this->form_validation->set_rules($config);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню