gpt4 book ai didi

php - 我如何在所有 Controller 中集中我的 init 函数的代码?

转载 作者:行者123 更新时间:2023-12-04 15:54:48 24 4
gpt4 key购买 nike

public function init(){
$this->view->user = Zend_Auth::getInstance()->getIdentity();
$this->view->siteName = Zend_Registry::get('config')->site->name;
$this->view->menu = $this->_helper->generateMenu(Zend_Auth::getInstance()->getIdentity());
$this->view->slogan = Zend_Registry::get('config')->site->slogan;
}

这是我跨所有模块的所有 Controller 中的初始化文件,是否有一个地方可以放置这段代码,以便它执行每个请求,而不管被调用的模块/ Controller 如何?

最佳答案

我宁愿建议你通过扩展 Zend_Controller_Plugin_Abstract 来编写一个插件,这是它的目的。

通过这种方式,您将无需在 Controller 中的任何地方执行任何操作。然后您可以使用注册表访问您的数据...

class My_Controller_Plugin_Acl extends Zend_Controller_Plugin_Abstract
{
protected $_auth = null;

protected $_acl = null;

public function __construct (Zend_Auth $auth, Zend_Acl $acl)
{
$this->_auth = $auth;
$this->_acl = $acl;
}

public function preDispatch(Zend_Controller_Request_Abstract $request)
{
//some code
}
}

然后在你的 bootstrap.php 中

$this->_front->registerPlugin(new My_Controller_Plugin_Layout());

http://framework.zend.com/manual/en/zend.controller.plugins.html

关于php - 我如何在所有 Controller 中集中我的 init 函数的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/866367/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com