繁体   English   中英

尝试使用 Phalcon 通过助手激活当前链接

[英]Trying to make current link active with helpers using Phalcon

我正在使用Phalcon并尝试根据用户是否在该视图上来让我的网络应用程序的每个页面的导航项显示为活动状态。 我正在使用 ActiveHelper.php 来调用静态函数。

ActiveHelper.php :

public static function isActive($route){

    if ($route == $this->router->getRewriteUri()){
      echo "active";
    }

layout/public.volt

<a href="{{ url('home') }}" class="<?php ActiveHelper::isActive('/home/'); ?>">Home</a>
<a href="{{ url('basicinfo') }}" class="<?php ActiveHelper::isActive('/basicinfo/'); ?>">Basic Info</a>

这似乎不起作用,但是这样做:

 <a href="{{ url('home') }}" class="
<?php 
   $route = '/home/';
   if ($route == $this->router->getRewriteUri()){
      echo 'active';
    } 
?>">Home</a>

当回显$this->router->getRewriteUri(); 我得到当前页面,例如“/home/”或“/basicinfo/”

public static function isActive($route){

    if ($route == $this->router->getRewriteUri()){
      return "active";
    }
    // ...
    return "";

在布局视图中:

<a href="{{ url('home') }}" class="<?php echo $currentUri=='/home/'?'active':'' ?>">Home</a>

编辑:在您可以访问 $router 的 BaseController 中,您可以设置一个变量,该变量将被注入到名为 $currentUri 的布局中,您可以改为检查它,这样代码就不会被一遍又一遍地调用,并且变量将具有要检查的值。 从布局中删除 isActive 函数调用并将变量传递到视图中。

在你的 index.php 中:

$compiler->addFunction('navClassName', function ($resolvedArgs) {
    return "BaseController::getNavClassName(".$resolvedArgs.")";
});

在 BaseController 中:

public static function getNavClassName($uri) {
    $di = Di::getDefault();
    if ($di->get('router')->getRewriteUri() == $uri) {
        return 'nav-link active';
    }
    return 'nav-link';
}

例如,检查您是否在索引/索引页面上...

伏特:

<li class="nav-item">
    {{ link_to('index/index', 'HOME', 'class': navClassName('/index/index')) }}
</li>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM