Zend Framework 2标题

ase*_*win 1 zend-framework2

我似乎记得在Zend Framework中,我们可以通过headScript在页面的操作中添加样式/脚本.在Zend2中,这似乎不是一种选择.

我在文档中没有看到有关处理这个问题的内容.基本上我的问题是; 在视图中添加这些样式/脚本是否合适?或者有没有新的方法将它们添加到控制器动作中?

谢谢

Eme*_*ing 9

在您的控制器操作中:

$this
    ->getServiceLocator()
    ->get('viewhelpermanager')
    ->get('HeadScript')
    ->appendFile('/js/custom.js')
;
Run Code Online (Sandbox Code Playgroud)

您可以通过创建"可调用的""服务定位器感知"控制器插件来简化这一过程.

您可以在模块配置文件中执行此操作:

...
'controller_plugins' => array(
    'invokables' => array(
        'Head' => 'Application\Controller\Plugin\Head',
    )
),
...
Run Code Online (Sandbox Code Playgroud)

创建中的"头"类module/Application/src/Application/Controller/Plugin/Head.php实现ServiceLocatorAwareInterface,并建立像一些方法javaScript()styleSheet例如,仅仅抓住视图助手,并返回它:

return $this
    ->getServiceLocator()
    ->getServiceLocator() // Main service Locator
    ->get('viewhelpermanager')
    ->get('HeadScript')
;
Run Code Online (Sandbox Code Playgroud)

然后在你的控制器中它更像是:

$this->Head()->javaScript()->appendFile('/js/custom.js');
Run Code Online (Sandbox Code Playgroud)

你可以尽情享受你想要的.也许甚至Magento风格的XML管理每个动作的布局.

UPDATE

如果您使用ZF2 MVC,则输出缓冲.所以我发现向页面添加脚本和样式表最好从附加到视图模型的模板文件中完成:

$this->headScript()->appendFile('/js/custom.js', 'text/javascript');

$this->headLink()->appendStylesheet('/css/custom.css');

将其保留在控制器之外,因为它与视图相关.