我有一个关于Yii验证的问题。我有一个下拉菜单,它的选项是Y和N。如果用户选择Y,用户必须解释为什么他选择Y,因此一个textArea框将成为必需的。
我的规则代码如下所示。array('explain', 'check', 'trigger'=>'med_effects'),
Check是我用于验证的函数
public function check($attribute, $params)
{
if($this->$params['trigger'] == 0 && $this->$attribute == '') {
$this->addError($attribute, 'Explain the effects of the medicine');
}
}
$this->$params['trigger']
的值没有改变。我假设是因为保存的值是0(Y),即使用户选择N也不会改变。当用户对表单求和时,我该如何确定他选择了哪个选项?
- 谢谢-谢谢
2条答案
按热度按时间w7t8yxp51#
在模型中创建属性:
在您的视图中,创建一个连接到新创建的属性的下拉列表。
并在rules()方法中返回一个规则数组,如下所示:
xu3bshqb2#
这也可能对Yii1上的用户有所帮助,比如说你有三个字段的查询都是[Yes| NO],并且您希望至少有一个字段选择为“是
这是您的模型的解决方案添加
在您的规则中添加
arvPrepInitiateValidation是一个函数