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!');
}
}
}
我有一个表单需要基于表单上的选择的不同场景。 例如:用户可以选择在商店中添加与账单地址不同的送货地址(这很简单,实际上,我会有 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!');
}
}
}