我正在使用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 /'
答案 0 :(得分:1)
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函数调用,并将变量传递给视图。
答案 1 :(得分:0)
在您的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>