我的表单根据表单上的选择需要不同的方案。 例如:用户可以选择在商店中添加与帐单地址不同的递送地址(这很简单,实际上,我会有3或4种不同的情况)。
因此,在验证表单时,根据用户的选择,我需要结合两种方案(一种用于帐单地址,另一种用于交付地址)。
我如何将两种情景结合起来?
答案 0 :(得分: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!');
}
}
}