导航
<li>
<a href="<?=base_url();?>backend/Administrator"
class="<?php ($_SERVER['REQUEST_URI']) ? 'class="waves-effect active"' : 'class="waves-effect"'; ?>"><i class="zmdi zmdi-view-dashboard"></i> <span> Home </span> </a>
</li>
<li>
<a href="<?=base_url();?>backend/Item" class="waves-effect"><i class="zmdi zmdi-view-list-alt"></i> <span> Item Management </span> </a>
</li>
<li>
<a href="<?=base_url();?>backend/Item/tag" class="waves-effect"><i class="zmdi zmdi-collection-plus"></i> <span> Category Management </span> </a>
</li>
<li>
<a href="<?=base_url();?>backend/User" class="waves-effect"><i class="zmdi zmdi-account-o"></i> <span> User Management </span> </a>
</li>
<li>
<a href="<?=base_url();?>backend/Transaksi" class="waves-effect"><i class="fa fa-exchange"></i> <span> Transactions </span> </a>
</li>
<li>
<a href="<?=base_url();?>backend/Transaksi/report" class="waves-effect"><i class="zmdi zmdi-comment-more"></i> <span> Report </span> </a>
</li>
</ul>
我在课堂上使用,但它不起作用。
如果URL处于活动状态,则使用类waves-effect active
。如果不活动,则使用类waves-effect
请帮我解决任何问题。
因为class属性被重复并且缺少一些回声。
更换:
class="<?php ($_SERVER['REQUEST_URI']) ? 'class="waves-effect active"' : 'class="waves-effect"'; ?>"
附:
class="<?php ($_SERVER['REQUEST_URI'] ? echo 'waves-effect active' : echo 'waves-effect') ?>"
要么:
<?php ($_SERVER['REQUEST_URI'] ? echo 'class="waves-effect active"' : echo 'class="waves-effect"') ?>
有多种可能的解决方案。
你需要echo
值和删除class=
部分,如果你不希望它将被重复
<li>
<a href="<?=base_url();?>backend/Administrator"
class="<?php ($_SERVER['REQUEST_URI']) ? echo 'waves-effect active' : echo 'waves-effect'; ?>"><i class="zmdi zmdi-view-dashboard"></i> <span> Home </span> </a>
</li>
有了你的$ _SERVER ['REQUEST_URI']可能永远存在,所以你的测试总是会导致你的三元组的TRUE值。
你是否喜欢更喜欢的东西?
<li>
<a href="<?= base_url(); ?>backend/Administrator"
class="<?= ($_SERVER['REQUEST_URI'] != '/home/') ? 'waves-effect active' : 'waves-effect'; ?>">
<i class="zmdi zmdi-view-dashboard"></i> <span> Home </span>
</a>
</li>
在这里,您将测试实际路径,而不仅仅是测试它是否存在。
$_SERVER['REQUEST_URI'] != '/home/'
您可以使用<?=
回显'字符串'
<?= ($_SERVER['REQUEST_URI'] != '/home/') ? 'waves-effect active' : 'waves-effect'; ?>
你应该做一个var_dump($ _ SERVER ['REQUEST_URI']);看看这个全局的作用,并确定你的路径是什么样的,以实现你想要的。
使用'/'斜杠可能会很痛苦,所以......你可以做一些事情,比如使用trim来清理前导/尾部斜杠'/'以摆脱可能带来的斜线的潜在问题你疯了。
trim($_SERVER['REQUEST_URI'],'/') =='home'
您班级的进一步简化将是......
class="waves-effect<?= (trim($_SERVER['REQUEST_URI'],'/') =='home') ? ' active' : ''; ?>">
要么
class="waves-effect <?= (trim($_SERVER['REQUEST_URI'],'/') =='home') ? 'active' : ''; ?>">
注意Space位于现有类和“已添加”类定义之间 - 活动。
你需要稍微玩一下。
您可以使用CodeIgniter URI类和URL帮助程序来使事情更简洁:
<?php
$this->load->helper('url');
$links = [
[
'uriStr' => 'backend/administrator',
'text' => 'Home',
'icon' => 'zmdi zmdi-view-dashboard',
],
[
'uriStr' => 'backend/item',
'text' => 'Item Management',
'icon' => 'zmdi zmdi-view-list-al',
],
[
'uriStr' => 'backend/item/tag',
'text' => 'Category Management',
'icon' => 'zmdi zmdi-collection-plus',
],
[
'uriStr' => 'backend/user',
'text' => 'User Management',
'icon' => 'zmdi zmdi-account-o',
],
[
'uriStr' => 'backend/transaksi',
'text' => 'Transactions',
'icon' => 'fa fa-exchange',
],
[
'uriStr' => 'backend/transaksi/report',
'text' => 'Report',
'icon' => 'zmdi zmdi-comment-more',
],
];
foreach( $links as $link )
{
$icon = '<i class="' . $link['icon'] . '"></i>';
$class = $this->uri->uri_string() == $link['uriStr']
? 'waves-effect active'
: 'waves-effect';
echo '<li>' .
anchor( $link['uriStr'], $icon . ' <span> ' . $link['text'] . ' </span> ', 'class="' . $class . '"' ) .
'</li>' .
PHP_EOL;
}