【发布时间】:2013-02-01 10:23:43
【问题描述】:
我希望有一个带有 3 个模板的 codeigniter 应用程序。
用于显示登录视图或错误视图的模板。
带有标题正文导航的模板
带有页眉正文侧边栏页脚的模板
现在我可以构建 codeigniter 应用程序,但是我找不到一个简单的模板系统来完成这项任务。有很多关于可用库的建议,但它们缺乏实现细节。
我们将不胜感激建议和指导。
【问题讨论】:
标签: php codeigniter templates
我希望有一个带有 3 个模板的 codeigniter 应用程序。
用于显示登录视图或错误视图的模板。
带有标题正文导航的模板
带有页眉正文侧边栏页脚的模板
现在我可以构建 codeigniter 应用程序,但是我找不到一个简单的模板系统来完成这项任务。有很多关于可用库的建议,但它们缺乏实现细节。
我们将不胜感激建议和指导。
【问题讨论】:
标签: php codeigniter templates
您可以使用 CodeIgniter 模板。 http://williamsconcepts.com/ci/codeigniter/libraries/template/index.html 在此处下载库,您还可以获得完整的文档。
使用此库,您可以使用多个模板,并且可以轻松管理并分组进行管理。
【讨论】:
只要你了解它就很简单。
您需要为上面列出的每个内容创建一个视图文件,因此您需要这样的内容(文件夹/文件明智):
views/page-login.php
views/page-error.php
views/header.php
views/footer.php
然后,您将从控制器加载其中一个页面视图。 然后,您可以在页面视图中加载所需的元素,因此页眉和页脚以及它们之间的页面特定代码。
例如,您的登录页面可能是:
<?php $this->load->view('header'); ?>
<h1>Login</h1>
<p>Please login to my website.</p>
<?php $this->load->view('footer'); ?>
【讨论】:
这很简单。
一个简单的例子:
您可以在控制器中放置
//a test variable
$data["foo"] = 'bar';
$data["page"] = 'a_page'; // this will make sure it loads the views/pages/a_page.php in your template
$this->load->view('templates/login',$data);
您可以在views/template/login.php 中输入:
<!-- your login template html -->
<html>
...
<!-- include the view you want inside your login template -->
<?php $this->load->view('pages/'.$page);?><!-- As you can see it loads /views/pages/a_page.php -->
<?php echo $foo;?> //This will echo Bar
</html>
或:
<?php $this->load->view('template/login_header');?>
<?php $this->load->view('pages/'.$page);?>
<?php $this->load->view('template/login_footer');?>
views/pages/a_page.php 也会知道$foo。
这会在您的模板中加载另一个视图(views/pages/a_page.php)。
这样您就可以创建您想要的所有模板,并将您的视图包含在这些模板中。
提示:以这种方式处理页眉和页脚很快就会变得难以管理。而且还是用模板库比较好。试试Phil sturgeon's library
【讨论】:
<body> <div nav> </div nav> <div content> <?php $this->load->view('pages/'.$page);?> </div content> <div footer> </div footer> </body>,但我对 $data["page"] = 'a_page'; $this->load->view('templates/login',$data); 感到困惑,例如使用它来加载表单
$data = array( 'name' => 'username', 'id' => 'username', 'value' => 'johndoe', 'maxlength' => '100', 'size' => '50', 'style' => 'width:50%', ); 也可以吗?