1.Controller in CI
To create your own project through CI, you only need to copy the application directory, system directory and index.php file in the CI compressed package to your own project directory. . Edit your own code entirely in the application directory, and do not modify the system directory. When a new version of CI is released in the future, you only need to replace the contents of the system file. If you modify it yourself, you will encounter trouble in the upgrade.
After the copy is completed, open the homepage of the new project through the URL: http://localhost:8080/testCodeIgniter/
Through this page, CI prompts us that the view currently displayed is defined in the welcome_message.php file, and the controller currently used is Welcome.php
Open
/application/controllers/Welcome.php
File, this file has only one index method, and the view is loaded in the method
welcome_message
[code]<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Welcome extends CI_Controller { /** * Index Page for this controller. * * Maps to the following URL * http://example.com/index.php/welcome * - or - * http://example.com/index.php/welcome/index * - or - * Since this controller is set as the default controller in * config/routes.php, it's displayed at http://example.com/ * * So any other public methods not prefixed with an underscore will * map to /index.php/welcome/<method_name> * @see http://codeigniter.com/user_guide/general/urls.html */ public function index() { $this->load->view('welcome_message'); } } ?>
View file
welcome_message.php
In the
/application/views
directory
use pathinfo to access the controller through URL, the format is: protocol://domain name/entry file/controller/method name , For private methods, protected methods or methods starting with an underscore, they cannot be accessed through pathinfo
Add a new test method in the above control file Welcome.php:
[code]public function test() { echo "这是Welcome控制器的test方法"; }
Through
pathinfo(http://localhost:8080/testCodeIgniter/index.php/Welcome/test)
You can call the test method of the Welcome controller
Create a new user controller, including an index method
[code]<?php class User extends CI_Controller { public function index() { echo 'user---index'; } } ?>
The controller needs to inherit from the CI_Controller class
Pass pathinfo can access the index method of the user controller: http://localhost:8080/testCodeIgniter/index.php/user/index
Note: pathinfo is case-sensitive. After testing with the CI3.0 version, it is case-insensitive
2. Views in CI
Controller loads the view
When CI loads the view through the controller, By calling
[code]$this->load->view('/user/index');
The view file name is index.php. At this time, there is no need to add a file suffix. The file path is a relative path based on the application/views directory.
The view file can be PHP native code. , no HTML code is required
Multiple views can be loaded in the controller, and the views can be loaded sequentially from top to bottom according to the structure of the document
[code]<?php echo "这是user视图"; ?>
Controller allocation variables
Two methods:
1. Single variable
[code]$this->load->vars('title', '这是标题');
##2. Allocate a batch of variables
[code]$data['title'] = '这是标题'; $data['list'] = $list; $this->load->vars($data);
For both allocation methods, you can use
$titleand
$listto access the variables in the view, here Just an example, a real project, the data should be obtained from the model.
system/core/loader.php
的model方法中,会将传入的模型名称转成小写再去寻找对应的文件,但是类名必须是首字母大写并且拼装“
_model
”,拼装后的结果应与模型文件的文件名一致,只是首字母大写,例如:文件名是
user_model.php
,类名应该是
User_model
。
– user_model.php文件
[code]<?php class User_model extends CI_Model { function __construct() { parent::__construct(); } function getAllUser() { $this->load->database(); $result = $this->db->get('blog_user'); return $result->result(); } } ?>
在控制器中这样调用
[code]// 加载模型,通过第二个参数还可以指定别名,后面的代码使用别名访问 $this->load->model('user_model'); // 加载完成后,超级对象就生成了user_model属性,它是User_model类型的对象 $list = $this->user_model->getAllUser(); // 将数据传给视图 $this->load->view('user_view', array('list'=>$list));
原则上,除了关系表,每张实体表都应该对应一个模型
以上就是CodeIgniter学习笔记 Item2--CI中的MVC的内容,更多相关内容请关注PHP中文网(www.php.cn)!