0

登録フォームとログインフォームの 2 つのフォームがあるページがあります。各フォームには送信ボタンがあります。現在、両方のフォームを検証していますが、たとえば、登録フォームの送信ボタンを押した場合、ログイン フォームではなく、登録フォームのエラー メッセージのみを表示したいと考えています。現時点では、両方のエラー メッセージが表示されています。これを回避する方法はありますか?

<div class="grid-container">

    <div class="grid-50 login">
        <h3>Inloggen</h3>
        <?php

            $loginEmail = array('placeholder' => "Email", 'name' => "loginEmail");
            $loginPassword = array('placeholder' => "Wachtwoord", 'name' => "loginPassword");
            $loginSubmit = array('name' => "loginSubmit", 'class' => "btn", 'value' => "Inloggen");
            $loginForgot = array('name' => "loginForgot", 'class' => "link", 'value' => "Wachtwoord vergeten?");

            echo form_open('login/inloggen', array('class' => 'grid-100 formc'));
            echo form_input($loginEmail);
            echo form_password($loginPassword);
            echo form_submit($loginSubmit);
            echo form_submit($loginForgot);
            echo form_close();
        ?>
        <?php echo validation_errors('<p class="error">');?>
    </div>



    <div class="grid-50 login">
        <h3>Registreren</h3>

        <?php

            $registerName = array('placeholder' => "Naam", 'name' => "registerName");
            $registerEmail = array('placeholder' => "Email", 'name' => "registerEmail");
            $registerPassword = array(  'placeholder' => "Wachtwoord", 'name' => "registerPassword");


    $registerSubmit = array('name' => "registerSubmit", 'class' => "btn", 'value' => "Registreer");

        echo form_open('login/register');
        echo form_input($registerName, set_value('registerName'));
        echo form_input($registerEmail, set_value('registerEmail'));
        echo form_password($registerPassword);
        echo form_submit($registerSubmit);
        echo form_close();
    ?>

    <?php echo validation_errors('<p class="error">');?>
</div>

コントローラーでの検証

$this->form_validation->set_rules('registerEmail', 'Email verkeerd', 'trim|required|valid_email');
        $this->form_validation->set_rules('registerPassword', 'Password te kort', 'trim|required|min_length[4]');
4

2 に答える 2

0

と のために別のルールを作成するとよいloginでしょうregistration

どうやって?

Form_validation.phpにファイルを作成するapplication/libraries

register内部では、ログインと例のルールを指定します

$config = array(
  'login_validation_rules'=>array(
        array(
        'field' => 'username',
        'label' => 'The User Name',
        'rules' => 'required'
    ),
        array(
        'field' => 'password',
        'label' => 'The Password',
        'rules' => 'required'
    )

   ),
   'registration_validation_rules'=>array(
        array(
        'field' => 'email',
        'label' => 'The Email',
        'rules' => 'required|valid_email'
    ),
        array(
        'field' => 'firstname',
        'label' => 'The Firstname',
        'rules' => 'required'
    )
   )
 );

次に、controller送信しているフォームと、使用する検証ルールの例をキャッチできます

if($this->input->post('registerSubmit'))
{
  if($this->form_validation->run('registration_validation_rules') == FALSE)
  {
   //error
  }else{
   //good
  }
}elseif($this->input->post('loginSubmit')){
  if($this->form_validation->run('login_validation_rules') == FALSE)
  {
   //error
  }else{
   //good
  }
}

同時に、コントローラーがルールで雑然とすることはありません。読みやすくなりますCodigniter マニュアル - 検証設定ファイルでこれについてもっと読むことができます

于 2013-07-18T02:37:29.277 に答える