Установить пользовательские сообщения об ошибках для каждого правила для проверки формы — Bonfire

У меня возникают проблемы при настройке пользовательских сообщений об ошибках при проверке формы для каждого правила.

Я попробовал это из документации Bonfire Вот

Вот код моей модели модуля

class Content_management_system_model extends BF_Model {

protected $table_name = 'article';
protected $key = 'id';

// be updating a portion of the data.
protected $validation_rules = array(
array(
'field' => 'article_alias',
'label' => 'lang:content_management_system_article_alias',
'rules' => 'unique[article.article_alias,article.id]',
'errors' => array(
'unique' => 'This is my custom error',
),
),

И здесь правила устанавливаются из Admin Controller при вставке

private function save_content_management_system($type = 'insert', $id = 0) {

// Validate the data
$this->form_validation->set_rules($this->content_management_system_model->get_validation_rules());
if ($this->form_validation->run() === false) {
return false;
}

Но это всегда показывает сообщение по умолчанию The value in "Article Alias" is already being used.

Согласно документации в указанной ссылке, она должна показывать ошибку This is my custom error

0

Решение

использовать функцию обратного вызова:

$this->form_validation->set_rules('current_pswd', 'Current Password', 'trim|required|callback_alias_exist_check');public function alias_exist_check($str)
{
>>Put your code here
}
1

Другие решения

Я заметил в конце вашего массива $ validation_rules, он заканчивается запятой (,) вместо точки с запятой (;). Также удалите запятую для вложенного массива, так как после вашего первого вложенного массива нет других массивов.

Удалите запятую (,) и замените точку с запятой (;)

protected $validation_rules = array(
array(
'field' => 'article_alias',
'label' => 'lang:content_management_system_article_alias',
'rules' => 'unique[article.article_alias,article.id]',
'errors' => array(
'unique' => 'This is my custom error',
)
);

Кроме того, ваш

if ($this->form_validation->run() **===** false) {
return false;
}

иметь 3 «равно» оператору, который не нужен. Сделайте так, чтобы только 2 «равнялись» оператору.

Еще одно предложение:

Поскольку вы звоните content_management_system_modelфункция get_validation_rules почему бы не создать функцию get_validation_rules () и создать массив внутри функции, а затем вернуть массив вместо назначения массива защищенной переменной?

function get_validation_rules()
{
$validation_rules = array(
'field'  => 'article_alias',
'label'  => 'lang:content_management_system_article_alias',
'rules'  => array(
'unique'   => 'This is my custom error',
)
);
return $validation_rules;
}

Дайте мне знать, если у вас есть дополнительные вопросы, и если ошибка все еще сохраняется. Ура!

0