原文发表于 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 ( '保存' ); |