2015-07-02 13:00:22 4521次浏览 5条回答 0 悬赏 10 金钱

控制器action:

public function actionBasic() {
    $model = new BasicForm();

    if ($model->load(Yii::$app->request->post()) && $model->validate()) {
        $result = $model->basicSave($this->_userid);
        die('保存成功!');

    } else {
        echo 'find';
        $model = Seller::findOne($this->_userid);

        return $this->render('basic', [
            'model' => $model,
        ]);
    }
}

Model:

<?php

namespace frontend\models;

use Yii;
use yii\base\Model;

use frontend\models\Seller;

/**
 * ContactForm is the model behind the contact form.
 */
class BasicForm extends Model
{
    public $shop_name;
    public $tel;
    public $sign;
    public $realname;

    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            [['shop_name', 'tel', 'sign', 'realname'], 'required'],
        ];
    }

    /**
     * @inheritdoc
     */
    public function attributeLabels()
    {
        /*return [
            'verifyCode' => 'Verification Code',
        ];*/
    }

    public function basicSave($userid) {

        $user = Seller::findOne($userid);
        $user->shop_name = $this->shop_name;
        $user->tel = $this->tel;
        $user->sign = $this->sign;
        $user->realname = $this->realname;

        //$user->generateAuthKey();
        if ($user->save()) {
            return $user;
        }

        return null;
    }

}

在post的时候, 这句一直为false,哪里问题?

if ($model->load(Yii::$app->request->post()) && $model->validate())
  • 回答于 2015-07-02 14:08 举报

    在这行

    if ($model->load(Yii::$app->request->post()) && $model->validate())
    

    为false时,使用

    var_dump($model->getErrors());
    

    输出一下错误信息?

    3 条回复
    回复于 2015-07-02 15:48 回复

    为空, empty

    回复于 2015-07-03 08:42 回复

      public function basicSave($userid) {
    
            $user = Seller::findOne($userid);
            $user->shop_name = $this->shop_name;
            $user->tel = $this->tel;
            $user->sign = $this->sign;
            $user->realname = $this->realname;
    
            //$user->generateAuthKey();
            if ($user->save()) {
                return $user;
            }
    
            return null;
        }
    

    这里,if($user->save())为假时,输出一下var_dump($user->getErrors())

    回复于 2015-07-03 09:27 回复

    根据本就执行不到这里的,因为前面已经为false了

  • 回答于 2015-07-02 17:33 举报

    哥们,你没更新成功,是不是在models里面没写rules啊???

  • 回答于 2015-07-02 17:57 举报

    试试数据库主键

    2 条回复
    回复于 2015-07-03 09:27 回复

    什么意思?

    回复于 2015-07-03 09:45 回复


    数据保存的时候不更新的话,你设置下数据表的主键试试

  • 回答于 2015-07-03 10:25 举报

    模型现在继承的是Model,要继承ActiveRecord,用上DAO。试试。

    2 条回复
    回复于 2015-07-03 10:47 回复

    我现在用的是AR方法的,没有用DAO,你的意思是将BasicForm继承ActiveRecord类吗?

    回复于 2015-07-03 10:50 回复

    是的。

  • 回答于 2015-07-06 00:13 举报

    我想你应该解决了,问题应该出来

    $model->load(Yii::$app->request->post())
    

    对吧

    1 条回复
    回复于 2015-07-06 08:53 回复

    是这一块的逻辑的,前端传递过来的表单名数据与后端Model里的类名不一致引起的

您需要登录后才可以回答。登录 | 立即注册
cfanbo
见习主管

cfanbo

注册时间:2015-05-23
最后登录:2015-09-10
在线时长:11小时52分
  • 粉丝2
  • 金钱110
  • 威望0
  • 积分220

热门问题