Еще одна ошибка CI Validation здесь. Я пробовал искать и, судя по тому, что я вижу, код у меня в порядке. Проверка выполняется - если я просто выведу из контроллера строку «Validation Failed», она отобразится.
Но я не могу отобразить его в реальном виде. Даже если у меня есть одна строка в представлении (например, echo validation_errors ();), нет вывода ошибок, даже если он не работает validation.
Приветствуются любые указатели :)
Контроллер
public function add() {
if ($this->form_validation->run('user_add_edit') == FALSE)
{
//Validation failed
$this->load->view('templates/header_generic');
$this->load->view('templates/navigation');
$this->load->view('user/add_user_form');
$this->load->view('templates/footer_generic');
}
else
{
echo "Form validated!";
}
}
Просмотр (частичный)
<div class = "panel-body">
<?php echo validation_errors(); ?>
<?php echo form_open('user/add'); ?>
<label for = "email">
Email Address
</label><br />
<div class = "form-group input-group <?php echo null === form_error('email') || is_null(form_error('email')) ? 'form-group has-error' : ''; ?>">
<span class = "input-group-addon">@</span>
<?php echo form_input($email_attr, set_value('email')); ?>
</div>
<br />
<?php echo form_error('email');?>
<br />
<?php echo form_fieldset("Password"); ?>
jfkdjflkdjflks
<?php echo form_fieldset_close(); ?>
<br />
<?php echo form_submit("submit", "Add New User", "class='btn btn-success'"); ?>
</form>
</div>
Проверка формы
$config = array(
'user_add_edit' => array(
array(
'field' => 'email',
'label' => 'Email Address',
'rules' => 'trim|required|valid_email|is_unique[user.email]',
'errors' => array(
'required' => 'You must enter a %s',
'valid_email' => '%s is not a valid email address',
'is_unique' => 'This email address already exists'
)
),






Неправильная настройка MY_Form_validation.php может испортить настройку правил формы через файл конфигурации.
Исправить
В application/libraries/MY_Form_validation.php - замените свой конструктор приведенным ниже кодом или просто следуйте приведенным ниже изменениям, добавив параметр $ config.
function __construct($config = array()){
parent::__construct($config);
$this->CI =& get_instance();
}
Это также возможность, что значение переменной $ config перезаписывается, что происходит внутри application/config/form_validation.php. Также проверьте это.
Альтернатива:
Загрузите файл конфигурации form_validation.php из метода контроллера и передайте соответствующий элемент конфигурации в set_rules (..), как показано ниже.
public function add() {
$this->load->config('form_validation');
$this->form_validation->set_rules($this->config->item('user_add_edit'));
if ($this->form_validation->run() == FALSE)
{
//Validation failed
$this->load->view('templates/header_generic');
$this->load->view('templates/navigation');
$this->load->view('user/add_user_form');
$this->load->view('templates/footer_generic');
}
else
{
echo "Form validated!";
}
}
Спасибо за предложение - хотя я не расширяю библиотеку CI Form Validation. Я создал расширение библиотеки MY_Form_validation и попробовал его. Если бы я просто позвонил в обычную библиотеку $this->load->library(form_validation), ничего не изменилось. Если я позвонил $this->load->library(MY_Form_validation, он сказал мне, что класса CI Form Validation нет в моей библиотеке. Я действительно не хочу переписывать всю библиотеку проверки.
Прекрасно, сэр. Я все равно добавил альтернативу.
Альтернатива заставила это работать. Странно, но я в деле. Спасибо :)
О, я столкнулся с этим как с возможной ошибкой, поэтому могу подтвердить, что
base_urlустановлен в конфигурации.