2

CodeIgniter を使用して小さなページを開始したばかりで、CodeIgniter のフォーム検証マジック トリックを実行したいと考えていました。このために、次の方法でいくつかのルールを設定しましたconfig/form_validation.php

$config = array(
    array(
        'field'   => 'name',
        'label'   => 'Name',
        'rules'   => 'trim|required|max_length[64]'
    )
);

しかし、それに加えて、コントローラー自体の内部にいくつかの特定のルールを設定したいと考えていました。

$this->form_validation->set_rules('name', 'Name', ' is_unique[table.name]');

私の問題 - 具体的set_rules()には、以前に定義されたすべてのルールがリセットされたようです。

両方のルール セットをマージする方法はありますか? または、その方法を見逃しましたか?

4

3 に答える 3

2

私は以前にこの正確な問題を抱えていました.1セットのルールを使用したかったのですが、特定のコントローラーに1つのルールを追加したかったのです。

残念ながら、あなたは正しいです - そして form_validation は古いルールを上書きします。アクセス可能な形式で保存されていないため、構成から古いルールを含む変数を呼び出すことさえできません。

私がワークアウトを行った方法は、一般的な構成ファイルでルールを配列として定義し、コントローラー内に配列をロードしてから、新しいルールを追加し、配列全体をルールセットとして設定することでした。

もう 1 つのオプションは、構成ファイル内で 2 つの異なるルールセットを定義するだけで (それらはほとんど同じかもしれませんが)、必要に応じて異なるルールセットを呼び出すだけです。

于 2012-07-15T06:20:59.677 に答える
1

各コントローラーの構成ファイルで名前付きアレイを定義し、Codeginiterユーザーガイドに記載されているように使用することをお勧めします。

$config = array(
             'signup' => array(
                                array(
                                        'field' => 'username',
                                        'label' => 'Username',
                                        'rules' => 'required'
                                     ),
                                array(
                                        'field' => 'password',
                                        'label' => 'Password',
                                        'rules' => 'required'
                                     ),
                                array(
                                        'field' => 'passconf',
                                        'label' => 'PasswordConfirmation',
                                        'rules' => 'required'
                                     ),
                                array(
                                        'field' => 'email',
                                        'label' => 'Email',
                                        'rules' => 'required'
                                     )
                                ),
             'email' => array(
                                array(
                                        'field' => 'emailaddress',
                                        'label' => 'EmailAddress',
                                        'rules' => 'required|valid_email'
                                     ),
                                array(
                                        'field' => 'name',
                                        'label' => 'Name',
                                        'rules' => 'required|alpha'
                                     ),
                                array(
                                        'field' => 'title',
                                        'label' => 'Title',
                                        'rules' => 'required'
                                     ),
                                array(
                                        'field' => 'message',
                                        'label' => 'MessageBody',
                                        'rules' => 'required'
                                     )
                                )                          
           );

配列の名前を使用して、$ this-> form_validation-> run('signup')のように呼び出します。

于 2012-07-14T16:38:12.260 に答える
0

CI の経験が豊富であるとは言えませんが、私が知る限り、追加のルールを追加できるはずです。試してみるのに失敗した場合:

$config[] = array('name', 'Name', ' is_unique[erfolge.name]');
$this->form_validation->set_rules($config);

またはarray_merge、標準構成を変更したくない場合に使用します。

于 2012-07-14T15:54:37.023 に答える