kevin
kevin

Reputation: 1218

User scope with Zend Framework

I'm switching a Zend Framework application from mono-user to multi-user.

What is the best approach to include the user scope in the controllers ?

One way would be to add the user id in each methods in every controllers:

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

An other one would be to create a new User model and fetch his items :

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

I'm wondering what's the best approach that would allow me to write minimal code and if you have another idea to "automagically" add the user scope (db scope, plugin...).

Upvotes: 0

Views: 105

Answers (1)

Mr Coder
Mr Coder

Reputation: 8186

Create an abstract class by extending 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);
}

}

Now use this class as base class for your controllers.

Upvotes: 1

Related Questions