1.以下划线为开头的控制器方法不能被浏览器直接访问,但可以被其他方法调用
必须public,不能下划线开头的方法才能被浏览器直接访问,访问时方法名是不区分大小写的
2.变量的共享:
在控制器里:
public function index()
{
$arr = array(
array('id'=>'101','name'=>'jack'),
array('id'=>'102','name'=>'bob'),
);
$this->load->vars('ar',$arr);
$tel = '101012';
$this->load->vars('tele',$tel);
$values['title']='much';
$values['title2']='apple';
$this->load->vars($values);
$this->load->view('test');
}
在视图里:
<html>
<head>
<meta http-equiv="Content-Language" content="en" />
<meta name="GENERATOR" content="PHPEclipse 1.0" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>title</title>
</head>
<body bgcolor="#FFFFFF" text="#000000" link="#FF9966" vlink="#FF9966" alink="#FFCC99">
<?php
echo $tele;
echo $title;
echo $title2;
?>
<table>
<?php foreach($ar as $item)://推荐使用此方法?>
<tr>
<td><?php echo $item['id'];?></td>
<td><?php echo $item['name'];?></td>
</tr>
<?php endforeach;?>
</table>
</body>
</html>
3.数据库读出数据
<span style="white-space:pre"> </span> $sql = 'select * from designer';
$list = $this->db->query($sql)->result();
$user['user'] = $list;
$this->load->view('test',$user);
->result 返回数组,每一条是对象
->result_array 返回数组,每一条是数组
->row 返回第一条数据,是对象
4.在默认的情况下,CodeIgniter会显示所有的PHP错误。但是当你开发程序结束时,你可能想要改变这个情况。
你会发现在index.php文件顶端有这个函数error_reporting(),通过它可以进行对错误的设置。 即使你关闭了错误报告,当有错误发生时,错误记录也不会停止。
所以,修改php.ini不能达到我们想要的效果。
下面是解决办法:
Codeigniter中禁止A Database Error Occurred错误提示
在CodeIgniter 用户指南中说到,设置 ENVIRONMENT 常量为 'development' 值将会允许所有PHP错误报告都输出到浏览器。 相反的,设置常量为 'production' 将会禁止所有错误报告的输出。
index.php中修改error_reporting:
代码如下:
define('ENVIRONMENT', 'production'); //默认是development
if (defined('ENVIRONMENT'))
{
switch (ENVIRONMENT)
{
case 'development':
error_reporting(E_ALL); //添加 ^E_NOTICE 可以屏蔽提示 添加^E_WARNING可以屏蔽警告
break;
case 'testing':
case 'production':
error_reporting(0);
break;
default:
exit('The application environment is not set correctly.');
}
}
Codeigniter中禁止A PHP Error was encountered错误提示
config/database.php中修改数据库设置:
代码如下:
$db['default']['db_debug'] = FALSE;
5.解决
A
PHP
Error
was
encountered
Warning: Invalid argument supplied for foreach
if(is_array($arr)) //add
{
//用if包围foreach即可
}
6.模型加载
<?php
class My_model extends CI_Model{
public function getAll(){
$this->load->database();
$sql = "select * from designer";
$res = $this->db->query($sql);
return $res->result_array();
}
}
public function getAll(){
$this->load->model("My_model");
$result = $this->My_model->getAll();
var_dump($result);
}
起一个别名
public function getAll(){
$this->load->model("My_model","user");
$result = $this->user->getAll();
var_dump($result);
}
文件名全小写,类名全大写,建议增加后缀名防止和控制器冲突
7.url相关参数
public function sub(){
echo $this->input->post('password');
}
public function loadview(){
$this->load->helper("url");
$this->load->view("view");
}
<form action="<?php echo site_url("welcome/sub")?>" method="post" enctype="text/plain">
name<input type="text" name="name" value="value" size="40" maxlength="40"/>
password<input type="text" name="password" value="value" size="40" maxlength="40"/>
email<input type="text" name="email" value="value" size="40" maxlength="40"/>
<input type="submit" name="submit" value="value"/>
</form>
另外base_url为基础目录 即为application文件夹所在的目录。
此helper可以配置自动加载,database也一样
8.修改默认控制器
8.修改默认控制器
在config\routes文件中
route_defaultcontroller
9.配置路由
9.配置路由
本身不存在的控制器方法,可以通过路由统一路由到同一个控制器来处理,可以隐藏入口文件