CI结合Django学习心得
时间:2009-08-14 来源:hkebao
1.example.com/index.php/blog/index/ 类似于这种写法。第一个URI中部分表示哪个控制器
index表示该控制器中哪个方法。
2.类名第一个字母必须要大写。即class Blog 这样是正确的!
3.example.com/index.php/products/shoes/sandals/123 后面两个是传递过来的参数值!
这跟Django是非常相似的!
views.py中定义了一个方法有两个参数值。
def func(param1,param2):
这个时候的URI就会有两个参数赋值!
4.当然也可以覆盖父类方法进行重新定义
function _remap($method)
{
if ($method == 'some_method')
{
$this->$method();
}
else
{
$this->comments();
}
}
表示如果URI中的方法名正好跟这个一样就走这个方法体。否则就走另一个方法体!
5.可在控制器文件中定义类似于析构的这么一个方法_output()表示不论如何都将调用此方法!
6.如果不想通过URI访问到某个方法的话可以将这个方法私有化:function _utility() 方法名前加 _ 即可实现
7.可以添加进来子控制器的。只要在 application/controllers 目录下创建文件夹并放入你的控制器就可以了。(统一存放在目录下面管理起来非常方便!)
http://localhost/phpci/index.php/products/shoes/ 再将子控制器的文件名称添加进来即可!
(将来比如说 用户可以当作是一个应用。那就可以单独建立起来一个子控制器出来!然后将此应用相关的控制器集中起来管理!)
index表示该控制器中哪个方法。
2.类名第一个字母必须要大写。即class Blog 这样是正确的!
3.example.com/index.php/products/shoes/sandals/123 后面两个是传递过来的参数值!
这跟Django是非常相似的!
views.py中定义了一个方法有两个参数值。
def func(param1,param2):
这个时候的URI就会有两个参数赋值!
4.当然也可以覆盖父类方法进行重新定义
function _remap($method)
{
if ($method == 'some_method')
{
$this->$method();
}
else
{
$this->comments();
}
}
表示如果URI中的方法名正好跟这个一样就走这个方法体。否则就走另一个方法体!
5.可在控制器文件中定义类似于析构的这么一个方法_output()表示不论如何都将调用此方法!
6.如果不想通过URI访问到某个方法的话可以将这个方法私有化:function _utility() 方法名前加 _ 即可实现
7.可以添加进来子控制器的。只要在 application/controllers 目录下创建文件夹并放入你的控制器就可以了。(统一存放在目录下面管理起来非常方便!)
http://localhost/phpci/index.php/products/shoes/ 再将子控制器的文件名称添加进来即可!
(将来比如说 用户可以当作是一个应用。那就可以单独建立起来一个子控制器出来!然后将此应用相关的控制器集中起来管理!)
8.视图
1.视图从不直接调用,必须被一个控制器来调用。
就是说比如PHP中的TPL文件不可能直接调用的。都得通过控制器进行转发。即类似于Django中的全部走urls.py配置单元。找到对应的视图方法然后处理不同的请求!
2.记住,在一个 MVC 框架中,控制器扮演着交通警察的角色,那么,他有责任去取回某一特定的视图。
相当于views.py中可以去渲染不同的模板。
3.系统中全部的视图层代码统一存放到:application/views/ 文件夹下面。
我们不可能直接输入这样的URI:
http://localhost/phpci/system/application/views/blowview.php而是要通过控制器来加载的
: $this->load->view('name');
4.载入多个视图方法:
function index()
{
$data['page_title'] = 'Your title';
$this->load->view('header');
$this->load->view('menu');
$this->load->view('content', $data);
$this->load->view('footer');
}
5.将来考虑将一个大的项目划分成多个子应用。然后我可以采用类似Django的方法针对每一个子应用单独建立其独有的视图文件夹与控制器文件夹来存放相应的代码!
$this->load->view('folder_name/file_name'); 如何建立子文件夹来保存起来子应用的视图层代码!
6.赋动态数据给视图
数据通过控制器以一个数组或是对象的形式传入视图 , 这个数组或对象作为视图载入函数的第二个参数 .
第一种情况:通过数组的方式
$data = array('title' => 'My Title','heading' => 'My Heading','message' => 'My Message');
$this->load->view('blogview', $data);
第二种情况:通过对象的方式
这里是使用对象的示例:
$data = new Someclass();
$this->load->view('blogview', $data);
比如说如下的一个视图方法:
function index()
{
$data['title'] = "My Real Title";
$data['heading'] = "My Real Heading";
$this->load->view('blogview', $data);
}
那我们的视图层代码就要这样编写:
<html>
<head>
<title><?php echo $title;?></title>
</head>
<body>
<h1><?php echo $heading;?></h1>
</body>
</html>
1.视图从不直接调用,必须被一个控制器来调用。
就是说比如PHP中的TPL文件不可能直接调用的。都得通过控制器进行转发。即类似于Django中的全部走urls.py配置单元。找到对应的视图方法然后处理不同的请求!
2.记住,在一个 MVC 框架中,控制器扮演着交通警察的角色,那么,他有责任去取回某一特定的视图。
相当于views.py中可以去渲染不同的模板。
3.系统中全部的视图层代码统一存放到:application/views/ 文件夹下面。
我们不可能直接输入这样的URI:
http://localhost/phpci/system/application/views/blowview.php而是要通过控制器来加载的
: $this->load->view('name');
4.载入多个视图方法:
function index()
{
$data['page_title'] = 'Your title';
$this->load->view('header');
$this->load->view('menu');
$this->load->view('content', $data);
$this->load->view('footer');
}
5.将来考虑将一个大的项目划分成多个子应用。然后我可以采用类似Django的方法针对每一个子应用单独建立其独有的视图文件夹与控制器文件夹来存放相应的代码!
$this->load->view('folder_name/file_name'); 如何建立子文件夹来保存起来子应用的视图层代码!
6.赋动态数据给视图
数据通过控制器以一个数组或是对象的形式传入视图 , 这个数组或对象作为视图载入函数的第二个参数 .
第一种情况:通过数组的方式
$data = array('title' => 'My Title','heading' => 'My Heading','message' => 'My Message');
$this->load->view('blogview', $data);
第二种情况:通过对象的方式
这里是使用对象的示例:
$data = new Someclass();
$this->load->view('blogview', $data);
比如说如下的一个视图方法:
function index()
{
$data['title'] = "My Real Title";
$data['heading'] = "My Real Heading";
$this->load->view('blogview', $data);
}
那我们的视图层代码就要这样编写:
<html>
<head>
<title><?php echo $title;?></title>
</head>
<body>
<h1><?php echo $heading;?></h1>
</body>
</html>
相关阅读 更多 +