system 是框架核心
application 是項目目錄
index.php 是項目入口文件
其他目錄可以刪除
控制器命名規則
控制器不加 Controller 后綴,
如 user.php 這就是一個控制器
修改默認控制器和方法
默認控制器是welcome.php,不喜歡可以改掉。
修改方法如下:
在 config/routes.php 中
$route['default_controller'] = 'welcome';
改為
$route['default_controller'] = 'index/home';
為什么不該成“index/index”呢???
因為CI中的控制器命名中沒有后綴,所以index類的index方法會默認為析構方法__construct();
所以不可以這樣搞,如果改成"index/index"則index方法會被調用兩次。
加載視圖文件
$this->load->view('index/home');
這個視圖文件放在/application/view/index/home.php
看到這個文件的后綴了嗎?它是一個php文件,不是html文件
在CI中 view() 方法可以使用多次,也就是可以加載多個模板
可以這樣寫:
1.在 /application/view/index目錄下有這樣幾個模板文件
header.php
main.php
footer.php
2.在index控制器的home方法中
public
function
home(){
//按順序加載模板文件
$this
->load->view(
'index/header'
);
$this
->load->view(
'index/main'
);
$this
->load->view(
'index/footer'
);
}
|
給模板分配變量
CI框架中的模板是直接寫php代碼的,如分配一個hello的變量:
$this->load->vars('hello','heheheh');
在模板中直接寫 <?php echo $hello;?>變量將變量輸出。
還可以這樣:
$data['hello'] = 'hello xxoo---';
直接寫入關聯數組
$this->load->vars($data);
在模板中關聯數組健名就是模板里的變量名
<?php echo $hello; ?>
CI超級對象($this)中的裝載器load
文件在system/core/loader.php,被實例化成一個屬性
$this->load 屬性是經常用到的,這里有幾個常用的方法
$this->load->view()
$this->load->vars()
$this->load->database()
$this->load->model()
還可以這樣寫
$data
[
'one'
] =
'one'
;
$data
[
'two'
] =
array
(1,2,3,4,5);
//加載模板並分配變量
$this
->load->view(
'user/user'
,
$data
);
|
獲取url中的參數$this->uri
文件在system/core/URI.php
如:url為 localhost/CodeIgniter/index.php/index/home
echo $this->uri->segment(1);
輸出為:index
還可以這樣
url為:http://localhost/CodeIgniter/index.php/index/home/1
public function home($id){
echo $id;
}
輸出 1
多個參數同樣,只不過順序有限制
輸入對象 $this->input
類文件目錄同上
$this->input->post('username');//同$_POST['username'];
$this->input->server('HTTP_REFERER');//同$_SERVER[HTTP_REFERER'']
$this在視圖中也可以使用
關於數據庫的操作
pdo設置
在application/config/database.php 中找到並填寫成如下:
$db['default'] = array(
'dsn'=> 'mysql:host=localhost;dbname=test;port=3306',
'hostname' => '',
'username' => 'root',
'password' => '123456',
'database' => '',
'dbdriver' => 'pdo',
);
// 設置默認加載的數據庫的配置
$active_group = 'default';
$query_builder = TRUE;
// 這個數組可以有多個,不同數據庫填寫不同數組名稱
$db['default'] = array(
);
$db['hello'] = array(
);
從數據庫中獲取數據
public
function
home(){
// 1.轉載數據庫操作類
$this
->load->database(
'default'
);
//默認為default可以不寫
$sql
=
"select id,title from article limit 10"
;
// 2.執行sql
$obj
=
$this
->db->query(
$sql
);
// 3.獲取結果集
$data
=
$obj
->result();
echo
"<pre>"
;
var_dump(
$data
);
}