原文发表于 CakePHP中国社区
http://cakephp.cn/forum.php?mod=viewthread&tid=638&extra=page%3D1
1. 使用Controller::set()方法,给视图传值。如
2. 给视图传多个值
上面的方法比较麻烦,也可以用以下方法:
方法1:
方法2:
3. 控制器中把值设到$this->request->data中,视图中能直接取得$this->reqeust->data的值。这时就不需要使用Controller::set()方法了。
使用$this->request->data的另外一个好处,就是能够自动填充到视图中Form的对应字段中
1. 使用Controller::set()方法,给视图传值。如
1 | //控制器中 |
2 | public function index() { |
3 | $this->set('hello', 'hello world'); |
4 | } |
5 |
6 |
7 | //视图index.ctp中 |
8 | echo $hello; //输出'hello world' |
2. 给视图传多个值
01 | //控制器中 |
02 | public function index() { |
03 | $this->set('name', 'CakePHP中国'); |
04 | $this->set('url', 'http://cakephp.cn'); |
05 | $this->set('email', 'admin@cakephp.cn'); |
06 | } |
07 |
08 |
09 | //视图index.ctp中 |
10 | echo $name; //输出'CakePHP中国' |
11 | echo $url; //输出'http://cakephp.cn' |
12 | echo $email; //输出'admin@cakephp.cn' |
上面的方法比较麻烦,也可以用以下方法:
方法1:
01 | //控制器中 |
02 | public function index() { |
03 | $this->set('configs', array('name'=>'CakePHP中国','url'=>'http://cakephp.cn', 'email'=>'admin@cakephp.cn')); |
04 | } |
05 |
06 |
07 | //视图index.ctp中 |
08 | echo $configs['name']; //输出'CakePHP中国' |
09 | echo $configs['url']; //输出'http://cakephp.cn' |
10 | echo $configs['email']; //输出'admin@cakephp.cn' |
方法2:
01 | //控制器中 |
02 | public function index() { |
03 | var $name = 'CakePHP中国'; |
04 | var $url = 'http://cakephp.cn'; |
05 | var $email = 'admin@cakephp.cn'; |
06 | $this->set(compact('name','url','email')); |
07 | } |
08 |
09 |
10 | //视图index.ctp中 |
11 | echo $name; //输出'CakePHP中国' |
12 | echo $url; //输出'http://cakephp.cn' |
13 | echo $email; //输出'admin@cakephp.cn' |
3. 控制器中把值设到$this->request->data中,视图中能直接取得$this->reqeust->data的值。这时就不需要使用Controller::set()方法了。
01 | //控制器中 |
02 | public function index() { |
03 | $this->request->data = array('name'=>'CakePHP中国','url'=>'http://cakephp.cn', 'email'=>'admin@cakephp.cn'); |
04 | } |
05 |
06 |
07 | //视图index.ctp中 |
08 | echo $this->request->data['name']; //输出'CakePHP中国' |
09 | echo $this->request->data['url']; //输出'http://cakephp.cn' |
10 | echo $this->request->data['email']; //输出'admin@cakephp.cn' |
使用$this->request->data的另外一个好处,就是能够自动填充到视图中Form的对应字段中
01 | //控制器中 |
02 | public function edit($id) { |
03 | $this->request->data = $this->User->read(null,$id); |
04 | } |
05 |
06 |
07 | /* |
08 | 假设返回结果为 |
09 | array('User'=>array('name'=>'cakephp中国', 'email'=>'admin@cakephp.cn', 'qq'=>'88888')); |
10 | */ |
11 |
12 |
13 | //视图edit.ctp中 |
14 | echo $this->Form->create('User',array('type'=>'post')); |
15 | echo $this->Form->input('name'); //显示'cakephp中国' |
16 | echo $this->Form->input('email'); //显示'admin@cakephp.cn' |
17 | echo $this->Form->input('qq'); //显示'88888' |
18 | echo $this->Form->end('保存'); |
本文介绍在CakePHP框架中如何将数据从控制器传递到视图的不同方法,包括使用Controller::set()方法、批量设置变量及利用$this->request->data进行自动填充。
150

被折叠的 条评论
为什么被折叠?



