关于CodeIgniter的入门请参照这篇文章:[PHP]框架教程:CodeIgniter框架的简易使用 下面介绍一下 创建视图的各种不同方法-与你的控制器和模型协同并用来显示结果的页面。 1 、 编写视图 视图是用户能看到你的网站的所有。他们使用一个统一的接口,而且可以根
关于CodeIgniter的入门请参照这篇文章:[PHP]框架教程:CodeIgniter框架的简易使用
下面介绍一下创建视图的各种不同方法-与你的控制器和模型协同并用来显示结果的页面。
1、编写视图
视图是用户能看到你的网站的所有。他们使用一个统一的接口,而且可以根据需要进行修改。MVC的好处之一是你分开了表示层和逻辑层,一切都显得很干净。
到现在为止,我们已经可以创建简单的“welcome”页面,现在让我们看看该如何使它变得更精细。
视图实际上是一组包含有你的内容的HTML结构。结构中有各种元素,如颜色,字体,文字布局等;不过视图不关心这些,它要做的只是取来内容,显示出来。
创建视图,首先你需要创建一个HTML网页的骨架,并保存为.php后缀。让我们称它为basic_view.php。保存在
application/views目录中。(CI的loader会在这个目录寻找视图文件。)
<p>Helloworld!</p>
function index() { $this->load->view('basic_view'); }
function index() { $data['mytitle']="A website monitoring tool"; $data['mytext'] ="Test Index."; }
然后,我们调用装载函数:
<?php function index() { $data['mytitle']="A website monitoring tool"; $data['mytext'] ="Test Index."; $this->load->view('basic_view',$data); } ?>
<h1 class="test"><?php echo$mytitle;?></h1> <p class="test"><?php echo$mytext;?></p>
下面来看一下页面的效果:
2、PHP语法的长格式和短格式
在我们继续之前,先了解一下PHP标记的两种不同格式。常用的方式是:
<?php echo $somevariable ?>
=$somevariable ?>
3、嵌套视图
为了最大程度地重用代码,我们可以提取HTML页面的公共部分,例如,header和footer,然后在显示实际视图时把它们组合起来。
让我们创建一个视图的header部分,这是一个符合W3C标准的header、包含HTML声明和meta数据。
首先,我们列出header部分的代码:
<title><?php echo $mywebtitle?></title> <base href="<?php%20echo">"/> <meta name="robots" content="<?php echo $myrobots?>"> <link rel="stylesheet" type="text/css" href="<?php%20echo">"/>
第一,在主调用视图中读入其它视图,因此我们的主视图,也就是basic_view,应该加上一行:
<?php $this->load->view('header_view');?> <h1><?php echo$mytitle;?></h1> <p><?php echo$mytext;?></p>
function index() { $data['mytitle'] = "A website monitoring tool"; $data['mytext'] = "Test Text!"; $data['myrobots'] = '<meta name="robots" content="noindex,nofollow">'; $data['mywebtitle']= 'Web monitoring tool'; $data['base'] =$this->config->item('base_url'); $data['css'] =$this->config->item('css'); $this->load->view('basic_view',$data); }
第二个方法将把视图加入控制器里面,给它分配一个变量:
function index() { $data['mytitle'] ="A website monitoring tool"; $data['mytext'] ="Test!Test!"; $data['myrobots'] ='<meta name="robots" content="noindex,nofollow">'; $data['mywebtitle']='Web monitoring tool'; $data['base'] = $this->config->item('base_url'); $data['css'] =$this->config->item('css'); $this->load->view('header_view','', TRUE); $this->load->view('basic_view',$data); }
<?php $this->load->view('header_view');?> <h1 class="test"><?php echo$mytitle;?></h1> <p class="test"><?php echo$mytext;?></p>
而且如果我们想要改变在网页上的信息,我们不需要去改动视图,而是只需要改变控制器里的变量值。“松耦合”原则使设计、升级和维持你的网站比较容易。
4、网站架构的现实问题
请稍等片刻,我们在header_view中动态生成了CSS样式表的地址:
<link rel="stylesheet" type="text/css" href="<?php%20echo">"/>
动态地产生这些数据需要这样一些操作:
首先,控制器必须在config文件中读取它们,
然后控制器必须在$data数组中装入它们而且传送它们到视图,
然后视图必须解开成为内存变量$base和$css,真正使用这两个变量的是HTML协议。
似乎这样做太绕圈子了,为什么不直接在视图中静止地插入数据?
<link rel="stylesheet" type="text/css" href="http://www.mysite.com/mystylesheet.css">
这取决于你的优先级。关键是要合理运用MVC设计原则,让它作为一种工具,而不是束缚。为此,CI给了你很大自由。
完整的项目源码:[PHP]框架CodeIgniter的简单测试源码