1

当有人查看我网站的页面时,我想在我的事件表中保存一些有关访问的信息。

目前我的视图中有这段代码 - 但我似乎没有将任何数据保存到数据库中 -

if(!Yii::app()->user->isGuest) {
$lview=new Event;
$lview->userid=Yii::app()->user->id;
$lview->type="lview";
$lview->data=$model->id;
$lview->event="view";
$lview->save();
}

以这种方式创建对象是否可能/可取?

4

1 回答 1

2

唯一可取的做法是将数据保存在控制器中。用于关注点分离

作为每个视图,在正常过程中$this->render('view');无论如何都是“渲染”的,您应该在此渲染调用之前在action中执行此保存过程。

至于保存问题,使用检查错误$lview->getErrors();,并从那里调试:

public function actionShowSomeView(){
    // initialize your model here

    if(!Yii::app()->user->isGuest) {
        $lview=new Event;
        // assign values to $lview
        if(!$lview->save()){
            CVarDumper::dump($lview->getErrors());;
        }
    }

    // do your other stuff

    $this->render('view');
}
于 2012-06-29T18:42:23.307 回答