yii中如何组合场景

how to combine scenarios in yii

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

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

如何结合这两种情况?

您不能通过规则配置对方案进行分组。相反,您要逐一创建规则列表。

您可以将多个方案应用于一组字段。

例如:

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'),
                 // :

    );
}

您不能有 'conditional' 个场景。要实施条件规则,请查看实施自定义验证。

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!');
      }
  }
}