CodeIgniter框架学习记录

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.修改默认控制器
在config\routes文件中
route_defaultcontroller
9.配置路由
本身不存在的控制器方法,可以通过路由统一路由到同一个控制器来处理,可以隐藏入口文件







你可能感兴趣的:(框架,PHP,CodeIgniter)