0

我有一个表单,它需要根据表单上的选择来使用不同的场景。例如:用户可以选择在与帐单地址不同的商店中添加送货地址(这很简单,实际上,我会有 3 或 4 个不同的场景)。

因此,在验证表单时,根据用户的选择,我需要结合两种情况(一种用于帐单地址,另一种用于收货地址)。

我将如何结合这两种情况?

4

1 回答 1

1

您不能对规则配置的方案进行分组。相反,您会一一创建规则列表。

您可以将多个场景应用于一组字段。

例如 :

public function rules()
{

    return array(
        // For purchases, supply the delivery address
        // For registration, supply the postal address
        // For payment, supply the delivery address and postal address

        array('delivery_address', 'required', 'on' => array('purchase', 'payment'),
        array('postal_address', 'required', 'on' => array('register', 'payment'),
                 // :

    );
}

你不能有“条件”场景。要实施条件规则,请查看实施自定义验证。

public function rules()
{
    return array(
       array('postal_address', 'validateAddresses'),
    );
}

public function validateAddresses($attribute,$params) {
  if (!$this->deliveryAddressSameAsPostal) {
      if ((empty($this->delivery_address)) {
        $this->addError($attribute, 'Please supply a delivery address!');
      }
  }
}
于 2015-01-21T22:29:36.217 回答