Как динамически редактировать правила валидации в 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;
}
}
}
Приведенный выше код написан на ходу здесь и не проверен, но должен внимательно показать мою идею.