У меня возникают проблемы при настройке пользовательских сообщений об ошибках при проверке формы для каждого правила.
Я попробовал это из документации 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
использовать функцию обратного вызова:
$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
}
Я заметил в конце вашего массива $ 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;
}
Дайте мне знать, если у вас есть дополнительные вопросы, и если ошибка все еще сохраняется. Ура!