【问题标题】:if inside class attribute html如果在类属性 html 中
【发布时间】:2017-12-16 15:13:06
【问题描述】:

导航

    <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>

我在课堂上使用 if,但它不起作用。
如果 URL 处于活动状态,则使用类 waves-effect active。如果不活动,则使用类waves-effect
请帮助我解决任何问题。

【问题讨论】:

  • echo放在输出之前

标签: php css codeigniter


【解决方案1】:

因为类属性重复了,有些回声不见了。

替换:

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

有不止一种可能的解决方案。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      有了你所拥有的 $_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/'
      

      您可以使用 &lt;?= 回显“字符串”

      <?= ($_SERVER['REQUEST_URI'] != '/home/') ? 'waves-effect active' : 'waves-effect'; ?>
      

      您应该执行 var_dump($_SERVER['REQUEST_URI']); 以查看此全局变量的作用并确保您的路径看起来像您想要的那样。

      弄乱“/”斜线可能会很痛苦,所以... 您可以做一些事情,例如使用修剪来清理前导/尾随斜杠“/”,以摆脱可能让您发疯的斜杠问题。

      trim($_SERVER['REQUEST_URI'],'/') =='home'
      

      对您的课程的进一步简化是......

      class="waves-effect<?= (trim($_SERVER['REQUEST_URI'],'/') =='home') ? ' active' : ''; ?>">
      

      class="waves-effect <?= (trim($_SERVER['REQUEST_URI'],'/') =='home') ? 'active' : ''; ?>">
      

      注意空格在现有类和“添加”类定义之间的位置 - 活动。

      你需要玩一下。

      【讨论】:

        【解决方案4】:

        您可以使用 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;
        }
        

        【讨论】:

          猜你喜欢
          • 2018-08-12
          • 2010-11-01
          • 1970-01-01
          • 2010-11-04
          • 2012-03-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多