尝试使用 Phalcon 与助手一起激活当前 link
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';
}
例如,检查您是否在 index/index 页面上...
伏特:
<li class="nav-item">
{{ link_to('index/index', 'HOME', 'class': navClassName('/index/index')) }}
</li>
我正在使用 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';
}
例如,检查您是否在 index/index 页面上...
伏特:
<li class="nav-item">
{{ link_to('index/index', 'HOME', 'class': navClassName('/index/index')) }}
</li>