2015-05-06 17:31:00 3871次浏览 5条回答 0 悬赏 0 金钱

场景:表单中两个字段,选填其中一个字段,另一个字段必须为空,请问怎么写rule?

最佳答案

  • phpxiebin 发布于 2015-05-07 09:41 举报

    没看太明白意思,大概理解成为有A,B两个字段,如果A不填写B就为必填,B不填写A就为必填;
    实现的方式有很多,比如以下方式可以自定义写个方法验证:(如下仅供参考)

    public function rules()
    {
    	return array(
    		array('A,B','check'),
    		array('A,B', 'safe'),
    	);
    }
    public function check(){
            if(empty($this->A) && empty($this->B)){
    		$this->addError('B','A字段或B字段必须填写一项');
    	}
    }
    
    2 条回复
    回复于 2015-05-07 10:32 回复

    感谢感谢感谢感谢感谢灰常感谢

    回复于 2015-05-07 10:34 回复

    不客气

    觉得很赞
  • 回答于 2015-05-07 09:53 举报

    && 应该改成 || 吧。但愿我没看错god bless me!

    2 条回复
    回复于 2015-05-07 10:29 回复

    如果A为空并且B也为空则提示(就是说A或B其中有一个有值就不提示啦),并不是如果A为空或者B为空提示。&&是并且,||是或者

    回复于 2015-05-07 10:36 回复

    嗯嗯。看错了

  • 回答于 2015-05-07 10:20 举报

    如果在yii2.0中有个when和whenClient的验证设置,
    a, required, when => [$this, 'isEmpty'], message => 不能为空,

    觉得很赞
  • 回答于 2015-05-07 13:11 举报

    单独写一个验证方法就好了啊,逻辑也比较简单

  • 回答于 2015-05-07 14:24 举报

    when属性,翻文档看下。

您需要登录后才可以回答。登录 | 立即注册
cookiehu
职场新人

cookiehu

注册时间:2014-11-03
最后登录:2016-06-22
在线时长:5小时7分
  • 粉丝4
  • 金钱20
  • 威望0
  • 积分70

热门问题