我有一个表单,它需要根据表单上的选择来使用不同的场景。例如:用户可以选择在与帐单地址不同的商店中添加送货地址(这很简单,实际上,我会有 3 或 4 个不同的场景)。
因此,在验证表单时,根据用户的选择,我需要结合两种情况(一种用于帐单地址,另一种用于收货地址)。
我将如何结合这两种情况?
我有一个表单,它需要根据表单上的选择来使用不同的场景。例如:用户可以选择在与帐单地址不同的商店中添加送货地址(这很简单,实际上,我会有 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'),
// :
);
}
你不能有“条件”场景。要实施条件规则,请查看实施自定义验证。
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!');
}
}
}