[CI]CodeIgniter视图 & 模型 & 控制器
--------------------------------------------------------------------------------------------------------
载入视图
$this->load->view('home/name'); //可以用子文件夹存储视图,默认视图文件以'.php'结尾
载入多个视图
$data['title'] = 'chenwei'; //给视图添加动态数据
$data['message'] = 'Your message';
$this->load->view('header', $data); //当一次性载入多个视图时,你只需在第一个视图传入数据即可(header视图显示title, content视图显示message)
$this->load->view('menu');
$this->load->view('content');
$this->load->view('footer');
使用对象的例子:
$data = new Someclass();
$this->load->view('blogview', $data);
视图文件中的变量
<title><?php echo $title; ?></title>
<div><?php echo $message; ?></div>
创建循环
class Blog extends CI_Controller{
function index()
{
$data['todo_list'] = array('clean house', 'call mom', 'run errands');
$data['title'] = 'my real title';
$data['heading'] = 'my real heading';
$this->load->view('blogview', $data);
}
}
<title><?php echo $title; ?></title>
<h1><?php echo $heading; ?></h1>
<ul>
<?php foreach($todo_list as $item):?>
<li><?php echo $item; ?></li>
<?php endforeach; ?>
</ul>
获取视图内容(赋值给一变量)
$buffer = $this->load->view('blogview', $data, true);
//view函数第三个可选参数可以改变函数的行为。如果将view第三个参数设置为true(布尔),则函数返回数据。view函数缺省行为是 false,将数据发送到浏览器。如果想返回数据,记得将它赋到一个变量中。
视图文件的PHP替代语法 =>
config/config.php中打开$config['rewrite_short_tags'],那么如果你的服务器不支持短标记,CodeIgniter将重写所有短标记。
注:如果你使用这个特性,如果在你的视图文件中发生 PHP 错误,则错误信息和行号将无法准确显示。相反,所有的错误将显示为 eval () 的错误。
正常的echo形式:<?php echo $variable; ?>
使用替代语法:<?=$variable?>
替代控制结构
<ul>
<?php foreach($todo_list as $item): ?>
<li><?=$item?></li>
<?php endforeach; ?>
</ul>
注:这里没有大括号。相反,结束大括号被替换成了 endforeach 。上面列出的每一个控制结构也有相似的关闭语法:endif, endfor, endforeach 和 endwhile,并且在每个结构以后注意不要使用分号(除了最后一个),用冒号!
<?php if($username == 'chenwei'): ?>
<h3>Hi chenwei.</h3>
<?php elseif($username == 'joe'): ?>
<h3>Hi Joe</h3>
<?php else: ?>
<h3>Hi unknow user</h3>
<?php endif; ?>
模型类文件均存放在 application/models 目录,当然也可以建立子目录,便于大型项目开发管理。
基本的模型类
1.类名首字母必须大写,其它字母小写,如 '表名_model.php',确保继承基本模型类CI_Model,文件名是模型类名的小写形式。
2.模型可以在控制器中被引用。
如:$this->load->model('User_model'); 或 $this->load->model('home/User_model');
模型一旦被载入 就可以使用,默认情况下模型名称直接被引用作为对象名。
如:$this->User_model->function();
当然可以重新命名对象名,通过在加载模型函数中指定第二个参数来设定。
如:$this->load->model('User_model', 'fubar');
$this->fubar->function();
自动载入模型
如果需要特定模型在整个项目中起作用,可以让CI在初始化时自动装载,通过在application/config/autoload.php文件的自动装载数组中添加该模型。
连接到数据库
模型被载入时不会自动连接数据库,以下方法可以使你连接数据库,
1.标准方法连接数据库
2.把第三个参数设置为TRUE来使模型装载函数自动连接数据库
$this->load->model('User_model', '', TRUE);
3.手动设定第三个参数来载入你的自定义数据库配置
$config['hostname'] = 'localhost';
$config['username'] = 'root';
$config['password'] = 'root';
$config['database'] = 'test';
$config['dbdriver'] = 'mysql';
$config['dbprefix'] = '';
$config['pconnect'] = FALSE;
$config['db_debug'] = TRUE;
$this->load->model('User_model', '', $config);
//注:自动连接数据库和手动连接数据库时,消耗的内存情况一样。
完整示例:
class User_model extends CI_Model{
var $title = '';
var $connect = '';
var $data = '';
function __construct()
{
parent::__construct();
}
function get_last_ten_entries()
{
$query = $this->db->get('entries', 10);
return $query->result();
}
function insert_entry()
{
$this->title = $this->input->post('title'); //接收POST提交的数据,使用了input类
$this->content = $this->input->post('content');
$this->date = time();
$this->db->insert('entries', $this);
}
function update_entry()
{
$this->title = $this->input->post('title');
$this->content = $this->input->post('content');
$this->date = time();
$this->db->update('entries', $this, array('id'=>$this->input->post('id')));
}
}
//上面用到的函数是 Active Record 数据库函数
-----------------------------------------------------------------------------------------------------
控制器文件一般保存在application/controllers/ 文件夹:
默认URL路由配置 $config['uri_protocol'] = 'AUTO'; //默认即pathinfo模式,可选
注:类名必须大写字母开头,首字母小写属于无效写法。
基本的控制器类
class Blog extends CI_Controller{
public function __construct()
{
parent::__construct();
//构造函数并不能返回值,但是可以用来设置一些默认的功能。确保你的控制器扩展自父控制器类,以便它能够继承其所有的方法。
}
public function index()
{
echo 'Hello World!';
}
public function comments()
{
$this->load->view('comment');
}
}
//使用 example.com/index.php/blog/comments 来访问 comments方法
定义默认控制器
application/config/routes.php 中 $route['default_controller'] = 'Blog';
将控制器放入子文件夹
在application/controllers 目录下新建目录,放入控制器即可。注:如果你要使用某个子文件夹下的功能,就要保证 URI 的第一个片段是用于描述这个文件夹的。application/index.php/home/blog/comments/123
私有方法:
private function _test()
{
return $variable = 'aaa'; //即使不加修饰词private,只要方法名字前带下划线(_)做前缀,即为私有方法,无法通过URL访问。
}
保留的方法名称:
控制器类名不能为index, 如 class Index extends CI_Controller{},因为index为CI默认方法名,包含在保留字内,具体参考保留字。
重新定义方法的调用规则:
_remap();
处理输出:
_output(); 详细参考输出类。
----------------------------------------------------------------------------------------------
@黑眼诗人 <www.farwish.com>
[CI]CodeIgniter视图 & 模型 & 控制器的更多相关文章
- 简单讲解MVC(视图/模型/控制器)
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码 ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库
在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...
- [.net 面向对象程序设计深入](6).NET MVC 6 —— 模型、视图、控制器、路由等的基本操作
[.net 面向对象程序设计深入](6).NET MVC 6 —— 模型.视图.控制器.路由等的基本操作 1. 使用Visual Studio 2015创建Web App (1)文件>新建> ...
- MVC(Model(模型) View(视图) Controller(控制器))
复习 1. 商品表 增删改查 index.php add.php view.php edit.php action.php 2. MVC(Model(模型) Vie ...
- 深入理解模型,视图和控制器(C#)
这篇文章向你提供ASP.NET MVC 模型,视图和控制的高度概览.换句话说,解释一下ASP.NET MVC中的 ‘M’, ‘V’, 和 ‘C’. 看完这篇文章以后,你应该就能理解ASP.NET MV ...
- CI框架视图继承
CI(CodeIgniter)框架 视图继承 这个代码不是我撸的 ... 当时在哪儿找的忘了 ... 如果有侵权什么的 ... 联系我删了 ... 需要去core里面创建一个MY_loader.php ...
- CI(CodeIgniter)学习第二讲
一.CI的文件结构: 了解CI的文件结构可以帮助我们快速的对CI框架有一个整体的认识,就好像我们去了一个陌生的城市一样,对你来讲周围的一切都是陌生和未知的,要想快速的了解这座城市,你可以买一张这座城市 ...
- CI(CodeIgniter)学习第一讲
一.CI的优势一. (1).CI是一个PHP框架:大家都知道PHP框架有很多,CI只是其中之一,框架是为了重用发明的.同样,CI的目标是实现让你比从零开始编写代码更快速地开发项目.CI可以将需要完成的 ...
- [CI]CodeIgniter快速开发指南
---------------------------------------------------------------------------------------------------- ...
随机推荐
- Tomcat 环境部署网站. 帆软平台部署.
主要内容. 需要使用Tomcat 部署 帆软报表平台(以下简称报表平台). 报表平台可以集成到网站, 也可独立部署. 此处是独立部署.即通过 网址:域名 独立访问这个报表平台. -- 技术要点 Tom ...
- bootstrap4学习—Bootstrap v4.0.0-alpha.6的快速参考
下面为Bootstrap v4.0.0-alpha.6中的代码快速检索地址: 网址:https://hackerthemes.com/bootstrap-cheatsheet/ 在使用bootstra ...
- vue实现未登录跳转到登录页面
环境:vue 2.9.3; webpack;vue-router 目的:实现未登录跳转 例子:直接在url地址栏输入...../home,但是这个页面要求需要登陆之后才能进入,判断的值就通过登陆之后给 ...
- linux中Centos7搭建lnmp环境
1.安装yum yum update 2.安装nginx源: yum localinstall http://nginx.org/packages/centos/7/noarch/RPMS/nginx ...
- mysql查询当前时间,一天内,一周,一个月内的sql语句
查询一天:select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ...
- Oracle 更改字符集 更改后之前的中文全成乱码了
安装时采用什么字符集主要看你的需求,一般测试用的话,就用UTF8.后面可以修改, 10g:UTF8 到ZHS16GBK SHUTDOWN IMMEDIATE; STARTUP MOUNT ; ALTE ...
- Faster RCNN原理分析(二):Region Proposal Networks详解
Faster RCNN原理分析(二):Region Proposal Networks详解 http://lib.csdn.net/article/deeplearning/61641 0814: A ...
- 重识linux-压缩文件的原理
1 一种压缩原理 在系统中,系统使用byte作为最小单位来描述文件大小,但是计算机最小的单位是bit 一个byte=8bit,通常描述一个文件,计算机是使用0和1来存储的,所以系统工程师利用技术把为0 ...
- 9.纯 CSS 创作一种按钮被瞄准的交互特效
原文地址:https://segmentfault.com/a/1190000014680999 吃鸡倍镜,哈哈哈 HTML代码: <div class="box"> ...
- spring+mybatis 配置双数据源
配置好后,发现网上已经做好的了, 不过,跟我的稍有不同, 我这里再拿出来现个丑: properties 文件自不必说,关键是这里的xml: <?xml version="1.0&quo ...