Mr_Zhu

Mr_Zhu

这家伙有点懒,还没写个性签名!

  • 财富值295
  • 威望值0
  • 总积分425

个人信息

  • 果然在model类中找到了getErrors()这个!!!

  • 模型类中必然包含相关的变量或方法,因为Yii2 错误信息就是通过模型传回去的!!!

  • 回复了 的回答

    表单验证分为前端JS验证和后端模型rules验证。
    你想在控制器里验证,这样也可以实现,但是违背了程序设计原则。

    你这种写的目的是为了实现功能而去写代码。没有考虑程序结构。再为以后挖坑呢。

    没有人会为你写出这样的代码,因为写出这样的代码太烂了。。。自己多看看手册吧。

    说的有道理,确实要多考虑下程序的结构!!!

  • 回复了 的回答

    一个是在前台做验证,直接用js写就好,一个是在model做验证,yii有rules

    嗯嗯,你说的对!!!

  • 回复了 的回答
    /**
     * 重载load方法
     */
    public function load($data, $formName = null)
    {
        if (parent::load($data, $formName)) {
            return $this->loadGoodsData();
        }
    
        return false;
    }
    private function loadGoodsData(){
        //在这里处理你的JSON
    
        return true;
    }
    

    你这个方法,我会认真试试的,多谢!!!

  • 回复了 的回答

    你的描述:提到一个ajax的json数据 $model->load()

    先分析下步骤:判断ajax请求 转换raw HTTP request body 也就是你所发送的json数据,拿到这个数据只要用json::decode转换成数组,那就随你怎么办了

    知道步骤了,那就代码了
    if(Yii::$app->request->isAjax) 这就是判断ajax的方法,请求都是在 request里的,去看下API就行了

    那如何转换数据呢,当然方法太多了,目的只有一个就转换数据,那数据从哪来呢,当然是request这个对象里,在哪里处理呢,生命周期,事件。

    首先,我打印了ajax用POST方法传过来的数据,是数组,然后我就根据自己的思路 验证了一下发现完全可以,个人比较赞同刀哥的回答。顺便贴上我的代码,希望能为后来者一些启发吧!
    if (Yii::$app->request->isAjax) {

            $data = Yii::$app->request->post();
            $username = explode(":", $data['username']);
            $password = explode(":", $data['password']);
            $sms = explode(":", $data['sms']);
            $model = new SignupForm();
            $model->username = $username[0];
            $model->password = $password[0];
            $model->sms = $sms[0];
        }
    
  • 回复了 的回答

    哎你阿你是有多懒

    不仅可以,而且可以很完美的结合!!!

  • 2017-05-20 已签到
    连续签到1天,获得了5个金钱
见习主管 等级规则
425/500
资料完整度
10/100
用户活跃度
0/100

Ta的关注

0

Ta的粉丝

1

Ta的访客

13