1

(前のページで)ユーザーが含めるアイテムの数を選択できるフォームがあります。2番目のページが送信されると、要件、フィールド名、および検証でエラーが発生した場合に返されるメッセージを受け取る検証スクリプトが実行されます。

if($numFieldSelectedearlier > 0) {
    for($z=1; $z<=$numFieldSelectedearlier; $z++) {
        $rules[] = "required,name,Name for item {$z} is required.";
    }
}

私のhtmlフォームでは、フィールドは次のようになります。

<form name="someForm" action="" method="post">

<?php if ($numFieldSelectedearlier > 0) {
    for($y=1; $y <= $numFieldSelectedearlier; $y++) { ?>        
    <input type="text" name="name[]" id="name<?php echo $y; ?>" />
<?php }
} ?>
....

私が抱えている問題は、スクリプトが現在、単一の要素( "name"という名前の1つのフィールドなど)を処理するように構築されていることです。phpバリデーターは、すべてのPOST要素を取得し、検証を行うためのフィールドとしてそれらを分割します。検証スクリプト自体を変更する方法を理解するのに苦労しています(これは、要素名自体が配列であるかどうかを確認するためのバリデーター(ループスルー)、または実際の$rules作成部分を処理するためのより簡単な方法を考えていない可能性があります。

注:私が気にしているのはフィールドが必須であるということだけに思えるかもしれませんが、基本的に他のフィールドと同じ検証オプション(必須、数字のみ、電子メールなど)を介して配列されたアイテムを渡したいので、私はしません理論的にはすでに存在するもののコードを複製したい。

あなたが提供できるどんな援助にも感謝します。

4

1 に答える 1

1

すでに両側でループを実行しているので、、などname1の名前を使用name2して、ルールをそれらのフィールドにリンクしてみませんか?

HTML側では、:を変更しますname

<input type="text" name="name<?php echo $y; ?>" ... />

そして、ルール作成側では、これらのフィールド名にバインドします。

if($numFieldSelectedearlier > 0) {
    for($z=1; $z<=$numFieldSelectedearlier; $z++) {
        $rules[] = "required,name{$z},Name for item {$z} is required.";
    }
}
于 2012-07-30T22:35:24.407 に答える