Codeigniter + Boostrap:在多个文件中拆分选项卡内容
Codeigniter + Boostrap : split tab-content in multiple files
首先我是网络开发的新手所以...
我不知道是否有办法执行以下操作(这也不是最佳做法)。
我有一个 CodeIgniter + Angularjs 应用程序,其中有一个视图包含 Bootstrap 选项卡(这也是一个 angular 应用程序):
[view_general_params.php]
<!DOCTYPE html>
<html lang="it">
<head>
</head>
<body ng-controller="HouseController">
<div class="container">
<ul class="nav nav-tabs" id="myTab">
<li class="active"><a href="#general" data-toggle="tab">Home</a></li>
<li><a href="#panel_params" data-toggle="tab">Profile</a></li>
<li><a href="#house_params" data-toggle="tab">Messages</a></li>
<li><a href="#statistics" data-toggle="tab">Settings</a></li>
</ul>
<div class="tab-content">
</div>
</div>
</body>
</html>
现在,因为每个选项卡都必须包含很多控件(文本框等。)我在问自己是否有办法将它拆分为控制器以这种方式加载的不同文件:
public function details($house_id)
{
$user = $this->session->userdata('user');
if (is_null($user)) {
$this->session->sess_destroy();
redirect('login/index');
}
else {
$data = $this->create_data_array($user);
$data['house'] = $this->houses_model->get_house($house_id);
$data['title'] = "House details";
$this->load->view('head_navbar', $data);
$this->load->view('house_details_view', $data);
$this->load->view('view_general_params', $data);
$this->load->view('view_house_params', $data);
$this->load->view('view_panel_params', $data);
$this->load->view('view_statistics', $data);
}
}
彼此的视图包含单个标签页的数据:
[view_general_params.php]
<!DOCTYPE html>
<html lang="it">
<head>
</head>
<body>
<div class="container">
<div class="tab-content">
<div class="tab-pane active" id="general">
general controls...
</div>
</div>
</div>
</body>
</html>
是的,你可以。在 Codeigniter 中,您可以使用视图作为模板。采取以下步骤:
在您的 views
目录中创建一个文件夹,将其命名为 "Templates".
application\views\templates\
按照您想要的方式创建每个模板并将其放入模板文件夹中:
application\views\templates\head_navbar.php
application\views\templates\house_details_view.php
application\views\templates\view_general_params.php
在您的控制器中,您希望调用这些模板时将第三个参数设置为 TRUE
,然后将其作为数组值传递给。然后这个数组将被发送到您的主视图,如下所示:
public function details($house_id) {
$user = $this->session->userdata('user');
if (is_null($user)) {
$this->session->sess_destroy();
redirect('login/index');
} else {
$data = $this->create_data_array($user);
$data['house'] = $this->houses_model->get_house($house_id);
$data['title'] = "House details";
$data_to_final_view = array(
"view1" => $this->load->view('head_navbar', $data, TRUE),
"view2" => $this->load->view('house_details_view', $data, TRUE),
"view3" => $this->load->view('view_house_params', $data, TRUE),
"view4" => $this->load->view('view_panel_params', $data, TRUE),
"view5" => $this->load->view('view_statistics', $data, TRUE)
);
$this->load->view('view_general_params', $data_to_final_view);
}
}
现在,在您的 view_general_params
视图中,您可以将模板的内容放置在您想要的任何位置:
<div class="container">
<ul class="nav nav-tabs" id="myTab">
<li class="active"><a href="#general" data-toggle="tab">Home</a></li>
<li><a href="#panel_params" data-toggle="tab">Profile</a></li>
<li><a href="#house_params" data-toggle="tab">Messages</a></li>
<li><a href="#statistics" data-toggle="tab">Settings</a></li>
</ul>
<div class="tab-content1">
<?= $view1 ?>
</div>
<div class="tab-content2">
<?= $view2 ?>
</div>
... etc..
</div>
首先我是网络开发的新手所以...
我不知道是否有办法执行以下操作(这也不是最佳做法)。
我有一个 CodeIgniter + Angularjs 应用程序,其中有一个视图包含 Bootstrap 选项卡(这也是一个 angular 应用程序):
[view_general_params.php]
<!DOCTYPE html>
<html lang="it">
<head>
</head>
<body ng-controller="HouseController">
<div class="container">
<ul class="nav nav-tabs" id="myTab">
<li class="active"><a href="#general" data-toggle="tab">Home</a></li>
<li><a href="#panel_params" data-toggle="tab">Profile</a></li>
<li><a href="#house_params" data-toggle="tab">Messages</a></li>
<li><a href="#statistics" data-toggle="tab">Settings</a></li>
</ul>
<div class="tab-content">
</div>
</div>
</body>
</html>
现在,因为每个选项卡都必须包含很多控件(文本框等。)我在问自己是否有办法将它拆分为控制器以这种方式加载的不同文件:
public function details($house_id)
{
$user = $this->session->userdata('user');
if (is_null($user)) {
$this->session->sess_destroy();
redirect('login/index');
}
else {
$data = $this->create_data_array($user);
$data['house'] = $this->houses_model->get_house($house_id);
$data['title'] = "House details";
$this->load->view('head_navbar', $data);
$this->load->view('house_details_view', $data);
$this->load->view('view_general_params', $data);
$this->load->view('view_house_params', $data);
$this->load->view('view_panel_params', $data);
$this->load->view('view_statistics', $data);
}
}
彼此的视图包含单个标签页的数据:
[view_general_params.php]
<!DOCTYPE html>
<html lang="it">
<head>
</head>
<body>
<div class="container">
<div class="tab-content">
<div class="tab-pane active" id="general">
general controls...
</div>
</div>
</div>
</body>
</html>
是的,你可以。在 Codeigniter 中,您可以使用视图作为模板。采取以下步骤:
在您的
views
目录中创建一个文件夹,将其命名为 "Templates".
application\views\templates\
按照您想要的方式创建每个模板并将其放入模板文件夹中:
application\views\templates\head_navbar.php
application\views\templates\house_details_view.php
application\views\templates\view_general_params.php
在您的控制器中,您希望调用这些模板时将第三个参数设置为
TRUE
,然后将其作为数组值传递给。然后这个数组将被发送到您的主视图,如下所示:public function details($house_id) { $user = $this->session->userdata('user'); if (is_null($user)) { $this->session->sess_destroy(); redirect('login/index'); } else { $data = $this->create_data_array($user); $data['house'] = $this->houses_model->get_house($house_id); $data['title'] = "House details"; $data_to_final_view = array( "view1" => $this->load->view('head_navbar', $data, TRUE), "view2" => $this->load->view('house_details_view', $data, TRUE), "view3" => $this->load->view('view_house_params', $data, TRUE), "view4" => $this->load->view('view_panel_params', $data, TRUE), "view5" => $this->load->view('view_statistics', $data, TRUE) ); $this->load->view('view_general_params', $data_to_final_view); } }
现在,在您的
view_general_params
视图中,您可以将模板的内容放置在您想要的任何位置:<div class="container"> <ul class="nav nav-tabs" id="myTab"> <li class="active"><a href="#general" data-toggle="tab">Home</a></li> <li><a href="#panel_params" data-toggle="tab">Profile</a></li> <li><a href="#house_params" data-toggle="tab">Messages</a></li> <li><a href="#statistics" data-toggle="tab">Settings</a></li> </ul> <div class="tab-content1"> <?= $view1 ?> </div> <div class="tab-content2"> <?= $view2 ?> </div> ... etc.. </div>