0

私は次のフォームを持っています:

<label>One</label> 
 Product ID:<input type="text" name="productid[]" value=""> 
 Product Quantity: <input type="text" name="quantity[]" value=""> <br>

<label>Two</label> 
 Product ID:<input type="text" name="productid[]" value=""> 
 Product Quantity: <input type="text" name="quantity[]" value=""> <br>

<label>Three</label> 
 Product ID:<input type="text" name="productid[]" value=""> 
 Product Quantity: <input type="text" name="quantity[]" value=""> <br>

 <!-- there may be more inputs like above (users can create new inputs 
    as many as they want) // I have a jquery function to create new rows-->


  <input type="submit" value="submit">

name="productid[]"今私の質問は、私のフォームではなく、このような名前を入力したときに、Codeigniter を使用してフォームを検証する方法name="productid"です。

通常、私はこの方法でフォームを検証しますが、今回は上記のフォームでは機能しません。

それを検証する方法は?

4

2 に答える 2

0

あなたはこれを試しました...?ガイドの下の数行...

于 2012-05-22T20:50:03.943 に答える
0

括弧付きのリテラル フィールド名を使用します。

$this->form_validation->set_rules('product_id[]', 'Product', 'required');
$this->form_validation->set_rules('quantity[]', 'Quantity', 'required');

これにより、その名前のすべてのフィールドで検証が実行されます。特定のインデックスのみを検証する必要がある場合は、もう一度 - リテラル フィールド名を使用します (そして、HTML でインデックスを指定します)。

// <input name="product_id[3]">
$this->form_validation->set_rules('product_id[3]', 'Product', 'required');

Codeigniter の Form Validation クラスのドキュメントにすべて記載されています。

フィールド名としての配列の使用

Form Validation クラスは、フィールド名としての配列の使用をサポートしています。次の例を検討してください。

<input type="text" name="options[]" value="" size="50" />

配列をフィールド名として使用する場合は、フィールド名を必要とするヘルパー関数で正確な配列名を使用し、検証ルール フィールド名として使用する必要があります。

たとえば、上記のフィールドにルールを設定するには、次のようにします。

$this->form_validation->set_rules('options[]', 'Options', 'required');

または、上記のフィールドのエラーを表示するには、次を使用します。

<?php echo form_error('options[]'); ?>

または、使用するフィールドを再入力するには:

<input type="text" name="options[]" value="<?php echo set_value('options[]'); ?>" size="50" />

多次元配列もフィールド名として使用できます。例えば:

<input type="text" name="options[size]" value="" size="50" />

あるいは:

<input type="text" name="sports[nba][basketball]" value="" size="50" />

最初の例と同様に、ヘルパー関数で正確な配列名を使用する必要があります。

<?php echo form_error('sports[nba][basketball]'); ?>

複数のオプションを持つチェックボックス (または他のフィールド) を使用している場合は、すべての選択が POST 配列に追加されるように、各オプションの後に空の括弧を残すことを忘れないでください:

<input type="checkbox" name="options[]" value="red" />
<input type="checkbox" name="options[]" value="blue" />
<input type="checkbox" name="options[]" value="green" />

または、多次元配列を使用する場合:

<input type="checkbox" name="options[color][]" value="red" />
<input type="checkbox" name="options[color][]" value="blue" />
<input type="checkbox" name="options[color][]" value="green" />

ヘルパー関数を使用する場合は、ブラケットも含めます。

<?php echo form_error('options[color][]'); ?>

于 2012-05-22T20:51:10.243 に答える