2016-06-02 12:22:36 9575次浏览 6条回答 2 悬赏 10 金钱

代码如下

public function rules()
{
    return [
        [['phone', 'password'], 'required'],
        [['phone', 'password'], 'trim'],
        ['phone', 'string', 'length' => [11], 'message' => '请输入正确电话号码'],
        ['password', 'string', 'length' => [8, 11], 'message' => '请输入8~16位的字母或数字组成的密码'],
    ];
}

我想通过ajax获取错误信息,所以想再controller中直接获取错误信息。

最佳答案

  • lxd 发布于 2016-06-04 10:18 举报

    获取最近的一个错误信息 ?

    if( !$model->validate()) {
        $tmp_earr     = $model->getFirstErrors();
        foreach( $model->activeAttributes() as $ati ) {
            if( isset( $tmp_earr[$ati] ) && !empty( $tmp_earr[$ati] ) )
                return $tmp_earr[$ati];
        }
    }
    
    1 条回复
    回复于 2016-06-04 18:17 回复

    你这个确实能获取到错误,不过这个错误是系统自带的提醒啊,而且还是英文的

    觉得很赞
  • 回答于 2016-06-02 12:50 举报

    自己再写个函数返回指定的文本?

    6 条回复
    回复于 2016-06-02 14:35 回复

    怎么写?还望指教

    回复于 2016-06-02 14:39 回复

    都不知道你要干嘛

    回复于 2016-06-02 15:04 回复

    我用ajax发送一个表单,然后yii来验证,如果正确就往数据库添加,如果错误就提示错误信息。

    回复于 2016-06-04 18:39 回复

    问题解决了,废了好大劲,最终直接把$model对象全都看一遍然后得出结果,$model->validate()后,$model->getValidators()[1]->message就能获取到错误信息了,至于那个1是什么意思,建议大家var_dump($model->getValidators())看一下就好了。

    回复于 2016-06-04 19:03 回复

    表单有个ajax验证开关,不知能返回错误文本不,没用过。还有,这类验证在前台会有一次验证,直接会有错误提示,不是吗?

    回复于 2016-06-04 21:27 回复

    因为某些原因吧,我不想用MVC模式,我想后台做成MC模式,然后V单独拿出来做,用ajax做数据提交之类的事。数据也动态获取

  • 回答于 2016-06-02 13:43 举报

    有个model->getError()

    2 条回复
    回复于 2016-06-02 14:35 回复

    这个不好使啊

    回复于 2017-05-09 13:13 回复

    你少个s
    正确的是:model->getErrors()

    觉得很赞
  • 回答于 2016-06-03 10:25 举报

    先model->validate(),然后再model->getErrors()

    1 条回复
    回复于 2016-06-04 18:17 回复

    这个是当然了,但是还是获取不到具体的错误信息

  • 回答于 2016-08-05 16:22 举报

    你把第一个 [['phone', 'password'], 'required'],去除 就能显示你自定义的提示信息了

  • 回答于 2017-12-07 16:38 举报

    我也是不能显示自己定义的message

您需要登录后才可以回答。登录 | 立即注册
数字派
总监

数字派 北京

注册时间:2016-04-19
最后登录:2023-03-07
在线时长:52小时34分
  • 粉丝10
  • 金钱1515
  • 威望10
  • 积分2135

热门问题