CakePHP控制器向视图传值总结

原文发表于 CakePHP中国社区   http://cakephp.cn/forum.php?mod=viewthread&tid=638&extra=page%3D1  

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('保存');

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值