gpt4 book ai didi

php - ZF2 - 将 Controller 名称获取到布局/ View 中

转载 作者:IT王子 更新时间:2023-10-29 00:16:19 25 4
gpt4 key购买 nike

我知道对于 ZF1,您将使用自定义 View 助手检索模块/ Controller 名称,该 View 助手将获取单例 frontController 对象并在那里获取名称。

使用 ZF2,因为他们已经废除了框架的许多单例特性并引入了 DI,我在其中为该模块中的所有 Controller 指定了别名...我可以想象我会通过访问 DI 或可能将当前名称注入(inject)到布局中。

任何人都知道你会怎么做。我想有一百种不同的方法,但在仔细研究代码几个小时后,我无法真正弄清楚现在应该如何完成。

我想要 Controller 名称的原因是将其作为特定 Controller 样式的类添加到正文中。

谢谢,多姆

最佳答案

ZF2 已经出局,骨架也出局了。这是在骨架之上添加的,所以它应该是你最好的例子:

在 Module.php 内部

public function onBootstrap($e)
{
$e->getApplication()->getServiceManager()->get('translator');
$e->getApplication()->getServiceManager()->get('viewhelpermanager')->setFactory('controllerName', function($sm) use ($e) {
$viewHelper = new View\Helper\ControllerName($e->getRouteMatch());
return $viewHelper;
});

$eventManager = $e->getApplication()->getEventManager();
$moduleRouteListener = new ModuleRouteListener();
$moduleRouteListener->attach($eventManager);
}

实际的 ViewHelper:

// Application/View/Helper/ControllerName.php

namespace Application\View\Helper;

use Zend\View\Helper\AbstractHelper;

class ControllerName extends AbstractHelper
{

protected $routeMatch;

public function __construct($routeMatch)
{
$this->routeMatch = $routeMatch;
}

public function __invoke()
{
if ($this->routeMatch) {
$controller = $this->routeMatch->getParam('controller', 'index');
return $controller;
}
}
}

在你的任何 View /布局中

echo $this->controllerName()

关于php - ZF2 - 将 Controller 名称获取到布局/ View 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8843092/

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