【问题标题】:Phalcon PHP - Get Controller Name in ViewPhalcon PHP - 在视图中获取控制器名称
【发布时间】:2014-05-14 21:26:03
【问题描述】:

我有一个带有顶部导航栏的站点布局,我需要根据当用户单击不同页面时更改的控制器将类设置为活动。

views->index.phtml

 <li class='<?php echo (isset($this->controllerName) && $this->controllerName == 'about') ? 'active' : '' ?>'><a href="/about">About Us</a></li>
 <li class='<?php echo (isset($this->controllerName) && $this->controllerName == 'services') ? 'active' : '' ?>'><a href="/services">Member Sevices</a></li>

我希望 Phalcon 有一个视图功能,或者我可以在引导程序中放入一些东西,这样它就适用于所有页面,而我不必记住在每个控制器中手动设置 controllerName 变量。

【问题讨论】:

    标签: php phalcon


    【解决方案1】:

    在您的视图中访问您的路由器服务:

    $this->router->getControllerName()
    $this->router->getActionName()
    

    或者如果你使用的是伏特,你可以使用简写

    router.getControllerName()
    router.getActionName()
    

    这将适用于您的用例,但如果您发现您的菜单逻辑变得过于笨拙,有几种方法可以实现您想要做的事情。

    我发现最简单的方法是使用 javascript,但如果他们禁用了 js (1%),那就没有备用方案了。如果您想覆盖 100% 的受众,您可以使用 Phalcon 团队在 INVO 中使用元素库所做的方法:https://github.com/phalcon/invo/blob/master/app/library/Elements.php

    【讨论】:

    • 谢谢,这是一个很好的答案@david.duncan。你如何让元素库工作?我试过了,没有用。在我的 services.php 中,我添加了 $di->set('elements', function () { $elements = new Elements(); return $elements; });在我的views/index.phtml 中,我添加了 {{ elements.getTabs() }} 但没有显示任何内容。 (请注意,我已经复制并编辑了 elements.php 的内容......我错过了什么?
    猜你喜欢
    • 1970-01-01
    • 2013-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    • 2011-02-13
    相关资源
    最近更新 更多