Codeigniter 根据条件激活默认选项卡

Codeigniter 根据条件激活默认选项卡,codeigniter,tabs,defaulttablemodel,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')">Profi

我有以下代码,一个包含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> 

我知道代码现在还不完整,但希望你能理解。我可能需要在php/js中使用IF语句,我希望有人能给我一些反馈。提前感谢所有的输入

试试这样的东西

// 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> 
<button class="tablink <?php if($defaultOpen == 'wall'){ echo 'active';}?>" onclick="openPage('Wall', this, '#F06078')" id="defaultOpen">Wall</button>
//控制器
公共功能索引($page='wall'){
//将所选数据传递给视图
$data['selectedPage']=$page;
$data['images\u model']=$this->images\u model->get\u images();
$this->load->view('viewName',$data);
}
//看法
//使用三元运算符将活动类设置为tab
//例如:
// 
//上面的代码表示如果$selectedPage等于'wall',则将class设置为active,
//如果不是什么都不做

试试这样的

// 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> 
<button class="tablink <?php if($defaultOpen == 'wall'){ echo 'active';}?>" onclick="openPage('Wall', this, '#F06078')" id="defaultOpen">Wall</button>
//控制器
公共功能索引($page='wall'){
//将所选数据传递给视图
$data['selectedPage']=$page;
$data['images\u model']=$this->images\u model->get\u images();
$this->load->view('viewName',$data);
}
//看法
//使用三元运算符将活动类设置为tab
//例如:
// 
//上面的代码表示如果$selectedPage等于'wall',则将class设置为active,
//如果不是什么都不做
控制器:

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>

控制器:

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>


第一种方法是在URL中使用参数,如
http://localhost/example.com/home?tab=wall

然后使用此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>
像这样使用
$defaultOpen

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

第一种方法是在URL中使用参数,如
http://localhost/example.com/home?tab=wall

然后使用此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>
像这样使用
$defaultOpen

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


您试图在何处显示默认选项卡?@DanishAli该视图是一个包含3个选项卡的页面:墙、个人资料、图库。我想要的是根据控制器将相关选项卡默认打开。如果控制器与墙相关,“墙”选项卡应为默认值。如果控制器与要上载图像的库相关,我希望登录选项卡为“库”。现在,如果我在“多媒体资料”选项卡中刷新页面,它会返回到“墙”选项卡。您试图在其中显示默认选项卡?@DanishAli该视图是一个包含3个选项卡的页面:墙、配置文件、多媒体资料。我想要的是根据控制器将相关选项卡默认打开。如果控制器与墙相关,“墙”选项卡应为默认值。如果控制器与要上载图像的库相关,我希望登录选项卡为“库”。现在,如果我在“库”选项卡中刷新页面,它将返回到“墙”选项卡。谢谢,但这是我在您的代码中遇到的错误:       遇到PHP错误严重性:运行时通知消息:ReferenceHanks只应传递变量,但这是我在代码中遇到的错误:       遇到PHP错误严重性:运行时通知消息:只有变量应该通过引用传递。您可以再次检查代码吗。视图中有一个语法错误,如下所示:Parse error:syntax error,C:\wamp64中意外的“?>”\n我现在已经修复了它,我忘记了回显,并且我的三元运算符有语法错误,现在应该可以了。谢谢,但仍然没有任何问题。没有错误,但登录后它仍然默认为“墙”选项卡,即使我将所选选项卡设置为“画廊”。也许我们得用id=defaultOpen做点什么。我注意到,如果make id=或$selectedTab,它仍然默认为墙,但不会像以前那样高亮显示它;这可能表明我们仍然缺少一些东西。不过还是要谢谢你的意见!您可能应该删除defaultOpen id,并用一个类替换它,就像我在回答中所做的那样。ID用于确定单个元素的目标和设置其样式,您需要将相同的行为应用于多个元素,类用于此。您没有问,但我忘了提到以下js代码:document.getElementById('defaultOpen')。click();这是单击选项卡打开的代码。所以现在我想看看是否可以创建一个if语句来实现这个功能。如果你能想到什么,我会很感激的。嗨,你能再检查一下你的代码吗。视图中有一个语法错误,如下所示:Parse error:syntax error,C:\wamp64中意外的“?>”\n我现在已经修复了它,我忘记了回显,并且我的三元运算符有语法错误,现在应该可以了。谢谢,但仍然没有任何问题。没有错误,但登录后它仍然默认为“墙”选项卡,即使我将所选选项卡设置为“画廊”。也许我们得用id=defaultOpen做点什么。我注意到,如果make id=或$selectedTab,它仍然默认为墙,但不会像以前那样高亮显示它;这可能表明我们仍然缺少一些东西。不过还是要谢谢你的意见!您可能应该删除defaultOpen id,并用一个类替换它,就像我在回答中所做的那样。ID用于确定单个元素的目标和设置其样式,您需要将相同的行为应用于多个元素,类用于此。您没有问,但我忘了提到以下js代码:document.getElementById('defaultOpen')。click();这是单击选项卡打开的代码。所以现在我想看看是否可以创建一个if语句来实现这个功能。如果你能想到什么,我会很感激的。嗨,丹麦语。在方法1中,表示$tab未定义。方法2没有任何作用。即使我将“gallery”作为$defaultOpen传递给视图,它在登录后仍将默认设置为“wall”选项卡。也许我们必须对id=defaultOpen执行一些操作。我注意到,如果make id=它仍然默认为墙,但它不会像以前那样高亮显示它;这可能表明我们仍然缺少一些东西。不过还是要谢谢你的意见!顺便说一句您没有问,但我忘了提到以下js代码:document.getElementById('defaultOpen')。click();这是单击选项卡打开的代码。