0

PHP Codeigniter フレームワークでログインフォームを作成し、その検証ルールを設定しました。ルールはうまく機能していますが、私が達成したいのは別のことです。

ログイン フォームには、control-groupというコンテナの下に Username & Password Textbox が設定されています。HTML に Bootstrap フレームワークを使用している人は、このことをよく知っています。

したがって、テキストボックスのコードは次のようになります。

<div class="control-group">
    <label for="username">Username:</label>
    <input type="text" id="username" name="username" value="" placeholder="Username" class="login username-field" />
    <?php echo form_error('username','<span class="help-inline error">', '</span>'); ?>
</div>

赤色のスタイルで表示できるように、スパン ラッパーもエラーに配置したことがわかります。しかし、他にやりたいことは、errorクラスをcontrol-groupに適用したいということです。

からになるように

<div class="control-group">

<div class="control-group error">

$error_class変数を取り、このように Controller から渡すことで、すでにこれを試しました。

$data['error_class'] = '';
$this->form_validation->set_rules('username', 'Username', 'required');
$this->form_validation->set_rules('password', 'Password', 'required');

if ($this->form_validation->run() == FALSE){
    $data['error_class'] = 'error';
    $this->load->view('administrator/login_view', $data);
}

しかし、それが何をするかというと、常にエラークラスをコントロール グループに適用します。フォームを送信しなくても。

これを達成する方法はありますか?

前もって感謝します。

4

1 に答える 1

1

ユーザーがフォームを送信するときにのみ、検証を実行する必要があります。

これをやってみてください

if($this->input->post())
{
 //your form validation
}

これは、ユーザーが投稿リクエストを送信したときにのみ実行されます。

編集:

個々のフィールドごとにエラーを入力するだけでなく、個々のフィールドform_error('field_name')ごとにエラーをチェックし、エラー クラスをエコーするために使用します。

例えば。

<?=(form_error('field_name')?'error':'')?>
于 2013-01-21T04:46:58.573 に答える