0

モデルに検証ルールがあります。

public function rules()
{
  return array(){
   array('order', 'required'),
  }
}

注文ビューに入力テキスト要素があります。

input type="text" name="order1"

ボタンを押すと、入力テキスト要素が増えたので、名前の異なる2つの入力テキスト要素ができました。例えば:

input type="text" name="order1"
input type="text" name="order2"

私の質問は、検証ルールを動的に編集するにはどうすればよいですか。「order1」または「order2」がnullの場合、検証メッセージが表示されます。ありがとう。

4

1 に答える 1

3

私は問題に対して異なるアプローチをとります。name = order1、order2、orderN の入力を使用する代わりに、このような配列を使用<input type="text" name="orders[]" />します。モデルでは、常に注文の配列を想定し、それをループして、アイテムのいずれかが検証されない場合はエラーを追加します。

class SomeModel
{
 public $orders;
 public function rules()
 {
  return array(
   array('orders', 'validateOrders'),
  );
 }

 public function validateOrders($attribute, $params)
 {
  foreach($this->orders as $order)
   if (empty($order)) {
    $this->addError('orders', 'There is an empty order');
    break;
   }
 }
}

上記のコードは外出先でここに書かれており、テストされていませんが、私の考えをよく示しているはずです。

于 2011-08-23T15:38:02.310 に答える