Как динамически редактировать правила валидации в Yii - PullRequest
0 голосов
/ 23 августа 2011

У меня есть правила проверки в моей модели:

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, появляется сообщение проверки.Благодаря.

1 Ответ

3 голосов
/ 23 августа 2011

У меня был бы другой подход к проблеме.Вместо ввода с именем = 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;
   }
 }
}

Приведенный выше код написан на ходу и не проверен, но должен внимательно показать мою идею.

...