【问题标题】:how to combine scenarios in yiiyii中如何组合场景
【发布时间】:2015-01-21 16:50:53
【问题描述】:

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

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

如何结合这两种情况?

【问题讨论】:

    标签: validation yii scenarios


    【解决方案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!');
          }
      }
    }
    

    【讨论】:

    • 感谢工匠。问题是,只有当用户指出它与邮政地址不同时才需要送货地址。因此,我真的无法为此创建一个场景。有没有类似条件场景的东西?
    • 在您的示例中,您混淆了场景和规则。查看我的更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多