2013-05-22 40 views
0

我將Zend Framework應用程序從單用戶切換到多用戶。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(); 
} 
... 

我想知道什麼是最好的方法,可以讓我編寫最少的代碼,如果你有另一個想法「自動地」添加用戶範圍(數據庫範圍,插件...)。

+0

編寫一個插件,授權和訪問控制從http://www.ens.ro/2012/03/20/zend-authentication-and-authorization-tutorial-with-zend_auth-and-zend_acl/和http開始://codeutopia.net/blog/2009/02/06/zend_acl-part-1-misconceptions-and-simple-acls/ – RockyFord

回答

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); 
} 

} 

現在使用這個類的基類的控制器上創建一個抽象類。