括弧付きのリテラル フィールド名を使用します。
$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][]'); ?>