如果在class属性html中

问题描述 投票:0回答:4

导航

    <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 请帮我解决任何问题。

php css codeigniter
4个回答
1
投票

因为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"') ?>

有多种可能的解决方案。


0
投票

你需要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>

0
投票

有了你的$ _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位于现有类和“已添加”类定义之间 - 活动。

你需要稍微玩一下。


0
投票

您可以使用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;
}
© www.soinside.com 2019 - 2024. All rights reserved.