代码中用于跟踪用户上次访问日期的最佳位置或每次应用程序请求应跟踪的数据是什么?扩展yii \ web \ Controller是否是个好主意?
答案 0 :(得分:4)
您可以使用基本控制器,当然这是个好主意。但是还有另一种更优雅的方法。你可以这样做:
1 - 将组件添加到组件目录中,例如(MyTrackingClass
):
namespace app\components;
class MyTrackingClass extends \yii\base\Component{
public function init() {
//SOME CODE HERE
//SOME CODE HERE
//SOME CODE HERE
parent::init();
}
}
2 - 将MyTrackingClass
组件添加到配置文件中的组件数组中:
'components' => [
'MyTrackingClass'=>[
'class'=>'app\components\MyTrackingClass'
],
//other components
3 - 将MyTrackingClass
添加到配置文件中的bootstarp
数组中:
'bootstrap' => ['log','MyTrackingClass'],
现在,您可以看到您在init()
方法中所写的所有内容,将在每个请求中,每个module
,controller
,action
等中执行。 ..
请注意,如果您不需要使用Events
和Behaviors
,则可以使用\yii\base\Object
代替\yii\base\Component