Активировать вкладки по умолчанию на основе условия - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть следующий код страницы, которая содержит 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);            
        }

Я знаю, что сейчас не все коды, но, надеюсь, вы поняли идею.Мне, вероятно, нужно будет использовать оператор IF в php / js, и я надеялся, что кто-нибудь даст мне обратную связь по этому поводу.Заранее спасибо за все вклады.

Ответы [ 3 ]

0 голосов
/ 18 февраля 2019

контроллер:

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>
0 голосов
/ 19 февраля 2019

Первый метод заключается в использовании параметров в 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>

Применить то же самое дляа также другие вкладки

Второй метод заключается в передаче переменной для просмотра.Используйте переменную, а не параметр в функции

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>
0 голосов
/ 18 февраля 2019

Попробуйте что-то вроде этого

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