На одном из моих сайтов у меня есть 2 формы на одной странице, у меня проблема, с validation_errors();
в основном, что происходит, для одной из форм, которые я проверяю на наличие ошибок, и если есть какие-то ошибки, я делаю некоторый стиль, чтобы покрасить ярлыки, как другая форма просто отображает ошибки, используя echo validation_errors();
, Когда я отправляю форму, которая не отображает ошибки, просто стирание ошибок, ошибки проверки отображаются в форме. Как я могу остановить это?
Ваш вопрос немного трудно читать, но если я правильно понимаю – у вас возникли проблемы с проверкой двух отдельных форм от одного контроллера или проблемами с ошибками из разных форм с использованием validation_errors()
которые afaik печатает ВСЕ ошибки:
Перед запуском проверки проверьте наличие скрытого поля, поля, уникального для формы, или вы можете проверить значение конкретной кнопки отправки.
<form> <input type="hidden" name="form1" value="whatever"> <input name="form1_email" /> <input type="submit" value="Submit Form 1" /> </form>
Затем вы можете использовать любой из этих методов, чтобы проверить, какая форма была отправлена (в этом примере проверяется, была ли отправлена «form1»):
<?php // Choose one: if ($this->input->post('form1')): // check the hidden input if ($this->input->post('form1_email')): // OR check a unique value if ($this->input->post('submit') == 'Submit Form 1'): // OR check the submit button value if ($this->form_validation->run()): // process form else: // Create a variable with errors assigned to form 1 // Make sure to pass this to your view $data['form1_errors'] = validation_errors(); endif; endif; // Do same for form 2
Тогда, на ваш взгляд, вместо использования validation_errors()
вы должны использовать:
if (isset($form1_errors)) echo $form1_errors; // Print only form1's errors
Если это не поможет, дайте мне знать и уточните свой вопрос, разместив свой код.
То, что я сделал, разделило обе формы. Представление будет похоже на
<?php echo validation_errors(); ?> <?php echo form_open('form1'); ?> <form id="form1" action="some_action"> //Inputs </form> <?php echo form_open('form2'); ?> <form id="form2" action="other_action"> //Inputs </form>
Теперь в контроллере вы можете иметь две разные функции для каждой проверки:
//Controller function some_action(){ //validate form and code } function other_action(){ //validate form2 and code }
Теперь все сообщения проверки будут отображаться в одном месте, но будут отображаться только сообщения каждой формы. надеюсь, это поможет