【发布时间】:2015-01-21 16:50:53
【问题描述】:
我有一个表单,它需要根据表单上的选择来使用不同的场景。 例如:用户可以选择在与帐单地址不同的商店中添加送货地址(这很简单,实际上,我会有 3 或 4 种不同的场景)。
因此,在验证表单时,根据用户的选择,我需要结合两种情况(一种用于帐单地址,另一种用于收货地址)。
如何结合这两种情况?
【问题讨论】:
标签: validation yii scenarios
我有一个表单,它需要根据表单上的选择来使用不同的场景。 例如:用户可以选择在与帐单地址不同的商店中添加送货地址(这很简单,实际上,我会有 3 或 4 种不同的场景)。
因此,在验证表单时,根据用户的选择,我需要结合两种情况(一种用于帐单地址,另一种用于收货地址)。
如何结合这两种情况?
【问题讨论】:
标签: validation yii scenarios
您不能对规则配置的场景进行分组。相反,您会一一创建规则列表。
您可以将多个场景应用于一组字段。
例如:
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!');
}
}
}
【讨论】: