如何在Yii中动态编辑验证规则

时间:2011-08-23 09:50:34

标签: php validation yii yii-cmodel

我的模型中有验证规则:

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

我的订单视图中有一个输入文本元素:

input type="text" name="order1"

当我按下按钮时,我的输入文本元素增加了,所以现在我有2个输入文本元素,名称不同。 e.g:

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

我的问题是: 如何动态编辑验证规则,因此当“order1”或“order2”为空时,会有验证消息。感谢。

1 个答案:

答案 0 :(得分: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;
   }
 }
}

上面的代码是在这里写的,未经测试,但应该密切关注我的想法。