Как динамически редактировать правила валидации в Yii

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

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 ответ

Решение

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

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

Другие вопросы по тегам