0

我正在将 Zend Framework 应用程序从单用户切换到多用户。

将用户范围包含在控制器中的最佳方法是什么?

一种方法是在每个控制器的每个方法中添加用户 ID:

/application/controllers/IndexController.php
...
public function indexAction() {
    $params['user_id'] = Zend_Auth::getInstance()->getIdentity()->id;
    $listHelper->readItems($params);
}
...

另一种方法是创建一个新的用户模型并获取他的项目:

/application/controllers/IndexController.php
...
public function indexAction() {
    $userModel = new application_models_user();
    $userModel->find(Zend_Auth::getInstance()->getIdentity()->id);
    $userModel->readItems();
}
...

我想知道什么是允许我编写最少代码的最佳方法,如果您有另一个想法来“自动”添加用户范围(数据库范围,插件......)。

4

1 回答 1

1

通过扩展 Zend_Controller_Action 创建一个抽象类

abstract class My_Controller_Action extends Zend_Controller_Action  {


private $userModel;

public function getUserModel() {
 if(is_null($this->userModel)) $this->userModel  = new application_models_user();
 return $this->userModel;

}
public function getUserId() {
  return $this->getUserModel()->find(Zend_Auth::getInstance()->getIdentity()->id);
}

}

现在使用这个类作为你的控制器的基类。

于 2013-05-22T15:05:58.177 回答