[英]Partial Views in CodeIgniter
我是使用CodeIgniter Framework的初学者。 以前,我已经学过Laravel。 我的问题是我想在Laravel中制作动态模板,例如Blade。 因此,在每个页面中,我只加载该页面仅需要的样式和脚本。
这是我使用CodeIgniter创建的代码,因此可以动态加载自定义样式和自定义脚本。
template.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
// <hmtl>
$this->load->view($header);
if(isset($style))
$this->load->view($style);
// <body>
$this->load->view($navbar);
if(isset($sidebar))
$this->load->view($sidebar);
$this->load->view($content);
$this->load->view($footer);
// </body>
if(isset($script))
$this->load->view($script);
// </html>
和我的控制器
public function index()
{
$data = [
'title' => 'Home',
'header' => 'partials/_header',
'navbar' => 'partials/_navbar',
'content' => 'guest/public',
'footer' => 'partials/_footer'
];
$this->load->view('template', $data);
}
也许您有更好的想法,因为我坚持了下去。 在Laravel中很容易,因为有@yield
和@section
。
你们的任何想法都会对我有帮助,谢谢。
最后,我只是想出了使其动态化的最佳方法。 如何在每个不同的页面中加载自定义脚本和CSS。
这是template.php的代码(在views文件夹中)
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$this->load->view($header);
$this->load->view($navbar);
$this->load->view($content);
$this->load->view($footer);
和控制器控制器
public function index() {
$data = [
'header' => 'partials/_header',
'style' => 'partials/style/_public_css',
'navbar' => 'partials/_navbar',
'content' => 'guest/public',
'footer' => 'partials/_footer',
'script' => 'partials/script/_public_js'
];
$this->load->view('template', $data);
}
并在_header.php的局部视图中
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>...</title>
<!-- Partial CSS Here -->
<?php if(isset($style)) $this->load->view($style); ?>
</head>
<body>
_navbar.php
<header>
<nav class="navbar navbar-inverse navbar-fixed-top">
....
</nav>
</header>
然后控制器中的content变量将加载public.php(在我的情况下,您必须替换为要加载的任何页面)
<div class="container">
....
</div>
最后一个是_footer.php
<footer>
....
</footer>
<!-- JQuery HERE -->
<!-- any js that you will you in all pages HERE -->
<!-- Partial Script Here -->
<?php if(isset($script)) $this->load->view($script); ?>
</body>
<html>
请记住 ,如果页脚在每个页面中都为静态,则将您的JQuery放在_footer.php中,并且它不只是将jQuery放在_header.php中,即使不是首先加载脚本的最佳实践。
我曾经做过一次类似的事情,现在肯定是现在,但是我在模板库中都做了。
使用像
$this->template_library->set_css_script('page.css');
$this->template_library->set_layout('product_page');
控制器将以如下调用结束:
$this->template_library->render_page();
然后,模板库将使用load-> view函数创建页面并根据已设置或未设置的值将其输出,并且页面布局意味着我可以具有各种设置的布局,例如home_page,product_page,checkout_page,message_page等等等
对于布局,我有一个主页面负责主页面,而不同页面的版本不同。
最后,尽管我恢复了简单的视图,并使用了页眉和页脚以及任何变体的通用文件。 维护许多不同的视图文件比维护所有布局,模板和局部部件要容易得多。
有很大帮助的一点是,一个视图可以加载另一个视图。 因此,为了使所有内容保持干燥,这意味着可以将任何派生页面部分的视图保存在“部分”文件夹中,以保存“相关产品”或“ blog_list”等内容。
希望能有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.