Отобразите validations_error () в codeigniter с начальной загрузкой

Прямо сейчас есть форма с ~ 10 полями, и предупреждение проверки слишком длинно, обратитесь к экранной шапке

введите описание изображения здесь

Код такой

    $this->form_validation->set_rules('title', 'Title', 'required');
$this->form_validation->set_rules('description', 'Description', 'required');
$this->form_validation->set_rules('title_tw', 'Title(繁體)', 'required');
$this->form_validation->set_rules('description_tw', 'Description(繁體)', 'required');
$this->form_validation->set_rules('title_cn', 'Title(简体)', 'required');
$this->form_validation->set_rules('description_cn', 'Description(简体)', 'required');
$this->form_validation->set_rules('pose', 'Pose', 'required');
$this->form_validation->set_rules('style', 'Style', 'required');
$this->form_validation->set_rules('level', 'Level', 'required');
$this->form_validation->set_rules('type', 'Type', 'required');
$this->form_validation->set_rules('teacher', 'Teacher', 'required');
$this->form_validation->set_rules('start_date', 'Start Date', 'required');

if ($this->input->post('type') != false && $this->input->post('type')[0] == 1) {
$this->form_validation->set_rules('price', 'Price (USD)', 'required|numeric|greater_than[0]');
$this->form_validation->set_rules('price_cn', 'Price (RMB)', 'required|numeric|greater_than[0]');
}

$this->form_validation->set_error_delimiters('<div class="alert alert-danger"><a class="close" data-dismiss="alert">x</a><strong>', '</strong></div>');

и интерфейс:

<?= validation_errors; ?>

Я хотел бы уменьшить размер, используя аккордеон в начальной загрузке, так есть ли способ отменить отображение проверки?

И как проверить, есть ли, например, ошибка более 3, чем показывать, например Всего 10 ошибок и использовать аккордеон для отображения сообщения об ошибке?

Большое спасибо.

0

Решение

Функция error_array () возвращает массив сообщений об ошибках. Таким образом, вы можете посчитать, сколько сообщений об ошибках там, как;

$errors= error_array();
$numOfErrors = count($errors);

Также вы можете использовать функцию form_error () для отображения ошибок соответственно их полям.

<?php echo form_error('title'); ?>
<input type="text" name="title">
<?php echo form_error('title_tw'); ?>
<input type="text" name="title_tw">
...
1

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

Насколько я понимаю, ваша проблема в общей величине ошибки, так как каждая ошибка отображается в отдельной строке.

Вы можете отобразить ошибку в одной строке, используя код ниже

<?php if(validation_errors()) { ?>
<div class="alert alert-danger">
<a class="close" data-dismiss="alert">x</a>
<strong><?php echo strip_tags(validation_errors()); ?></strong>
</div>
<?php } ?>
1

Вы отображали каждую ошибку отдельно, поэтому она занимает столько места между ними и выглядит не очень хорошо.

так что здесь я покажу вам, как отобразить его правильно, чтобы он выглядел и чувствовал себя хорошо но для этого требуется начальная загрузка, и вы используете ее, чтобы использовать приведенный ниже код в codeigniter.

И Вы также можете закройте его, нажав кнопку закрытия справа вверху див.

<?php if (!empty(validation_errors())): ?>
<div class="alert alert-danger">
<a class="close" data-dismiss="alert" title="close">x</a>
<ul><?php echo (validation_errors('<li>', '</li>')); ?></ul>
</div>
<?php endif; ?>

Если вы хотите посмотреть, как это будет выглядеть, у меня есть демо-изображение для вас:
введите описание изображения здесь

0