根据条件激活默认选项卡

时间:2019-02-18 05:59:06

标签: codeigniter tabs defaulttablemodel

我有以下代码,该页面包含3个选项卡,如下所示:

<div id="tab-container">
<button class="tablink" onclick="openPage('Wall', this, '#F06078')" id="defaultOpen">Wall</button>
<button class="tablink" onclick="openPage('Profile', this, '#F06078')">Profile</button>     
<button class="tablink" onclick="openPage('Gallery', this, '#F06078')">Gallery</button> 

这个想法是使从控制器调用的任何选项卡都成为默认选项卡并放到其上。我尝试将$ data传递到页面,但告诉我它是未定义的。我还认为也许将信息存储在会话中并在选项卡所在的页面上调用它,但是我在编码方面还不够灵活。

function index ($page='wall') {         

$data['defaultOpen'] = 'wall';
$data['images_model'] = $this->images_model->get_images();          

$this->load->view($page, $data);            
        }

我知道代码现在还不全,但是希望您能理解。我可能需要在php / js中使用IF语句,我希望有人可以对此提供一些反馈。预先感谢您的所有输入。

3 个答案:

答案 0 :(得分:0)

尝试这样的事情

// controller
public function index ($page = 'wall') {

    // pass the selected data to view
    $data['selectedPage'] = $page;
    $data['images_model'] = $this->images_model->get_images();

    $this->load->view('viewName', $data);  

}

// view

// use ternary operator to set active class to tab
// example:
// <?php echo $selectedPage== 'wall' ? 'active' : '' ?>
// code above means if $selectedPage equals 'wall', set class to active,
// if not do nothing
<button class="tablink <?php echo $selectedPage== 'wall' ? 'active' : '' ?>" 
   onclick="openPage('Wall', this, '#F06078')"id="defaultOpen">Wall</button>
<button class="tablink <?php echo $selectedPage== 'profile' ? 'active' : '' ?>" 
   onclick="openPage('Profile', this, 
 '#F06078')">Profile</button>     
<button class="tablink <?php echo $selectedPage== 'gallery' ? 'active' : '' ?>" 
   onclick="openPage('Gallery', this, 
 '#F06078')">Gallery</button> 

答案 1 :(得分:0)

控制器:

public function index ($page = 'wall') {
     $this->load->helper('url'); // only if you haven't load helper in autoload.
     $data['images_model'] = $this->images_model->get_images();
     $this->load->view('viewName', $data);
}

视图:

<?php $active_tab = end($this->uri->segment_array());?>
<button class="tablink<?php echo ($active_tab == 'wall')? ' active':''; ?>" onclick="openPage('Wall', this, '#F06078')" id="defaultOpen">Wall</button>
<button class="tablink<?php echo ($active_tab == 'profile')? ' active':''; ?>" onclick="openPage('Profile', this, '#F06078')">Profile</button>     
<button class="tablink<?php echo ($active_tab == 'gallery')? ' active':''; ?>" onclick="openPage('Gallery', this, '#F06078')">Gallery</button>

答案 2 :(得分:0)

第一种方法是在http://localhost/example.com/home?tab=wall

之类的URL中使用参数

然后使用此URL参数激活选项卡

$tab = $this->input->get('tab'); //wall
<button class="tablink <?php if($tab == 'wall'){ echo 'active';}?>" onclick="openPage('Wall', this, '#F06078')" id="defaultOpen">Wall</button>

同样适用于其他标签

第二种方法是通过pas变量查看。在函数中使用变量而不是参数

function index() {         
  $data['defaultOpen'] = 'wall';
  $data['images_model'] = $this->images_model->get_images();          
  $this->load->view($page, $data);            
}

像这样使用$defaultOpen

<button class="tablink <?php if($defaultOpen == 'wall'){ echo 'active';}?>" onclick="openPage('Wall', this, '#F06078')" id="defaultOpen">Wall</button>