Codeigniter 2 создается на одной странице, проблема validation_errors - PullRequest
6 голосов
/ 27 апреля 2011

На одном из моих сайтов у меня есть 2 формы на одной странице, у меня проблема, с validation_errors();, в основном то, что происходит, для одной из форм, которые я проверяю на ошибки, и если есть какие-либо ошибки, яделая некоторые стили, чтобы сделать метки красными, как другая форма просто отображает ошибки, используя echo validation_errors();.Когда я отправляю форму, в которой не отображаются ошибки, в стилизации отображаются ошибки проверки.Как я могу это остановить?

Ответы [ 2 ]

23 голосов
/ 27 апреля 2011

Ваш вопрос немного сложен для чтения, но если я правильно понимаю - у вас проблемы с проверкой 2 отдельных форм на одном контроллере или проблемы, связанные с ошибками из разных форм с использованием 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

Если это не поможет, дайте мне знать и уточните свой вопрос, разместив свой код.

0 голосов
/ 22 июня 2015

Что я сделал, так это разделил обе формы. Вид будет выглядеть как

    <?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
    }

Теперь все сообщения проверки будут появляться в одном и том же месте, но будут отображаться только сообщения каждой формы. Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...