一、使用assign()
方法将数据传到视图
1. 需要继承think\Controller来使用的fetch()方法
$data = [
'name' => 'Tommy',
'sex' => 'male',
'age' => '24'
];
$this->assign($data);
return $this->fetch();
2. 可以直接使用的助手函数view()
$data = [
'name' => 'Tommy',
'sex' => 'male',
'age' => '24'
];
$this->assign($data);
return view();
二、直接将数据传递到视图
对于fetch()
和view()
,我们除了可以传入模板位置参数外,还可以传入第二个参数给页面传递值。
但是,如果这样做,那第一个参数不能省略,可以为空字符串''
,第二个参数必须为数组
。
$data = [
'name' => 'Tommy',
'sex' => 'male',
'age' => '24'
];
return view('',$data);//或 return $this->fetch('',$data);
//第一个参数必须要写,不写会报错
return view(模板地址,数据数组);
return $this->fetch(模板地址,数据数组);
例子汇总
<?php
namespace app\index\controller;
use think\Controller;
class Index extends Controller
{
/* 渲染视图的时候给页面传递参数
1.可以用assign()方法来绑定数据,它会将数据绑定到接下来你要渲染的页面上,绑定内容为数组;
2.直接使用fetch()或view()方法,在第二个参数传入要绑定的数据,也是数组模式;
*/
// 1.使用assign + 助手函数
public function one()
{
$data = [
'title'=> '使用assign + 助手函数',
'way' => '$this->assign($data);<br>return view();<br>',
'name' => 'Tommy',
'sex' => 'male',
'age' => '24'
];
$this->assign($data);
return view();
}
// 2.使用assign + fetch
public function two()
{
$data = [
'title'=> '使用assign + fetch',
'way' => '$this->assign($data);<br>return $this->fetch(\'one\');<br>',
'name' => 'Tommy',
'sex' => 'male',
'age' => '24'
];
$this->assign($data);
return $this->fetch('one');
}
// 3.只使用view(),不用assign()
public function three()
{
$data = [
'title'=> '只使用view(),不用assign()',
'way' => 'return view(\'one\',$data);<br>',
'name' => 'Tommy',
'sex' => 'male',
'age' => '24'
];
return view('one',$data);
}
// 4.只使用fetch(),不用assign()
public function four()
{
$data = [
'title'=> '只使用fetch(),不用assign()',
'way' => 'return $this->fetch(\'one\',$data);<br>',
'name' => 'Tommy',
'sex' => 'male',
'age' => '24'
];
return $this->fetch('one',$data);
}
// 5.如果数据少的时候,可以直接写到方法里,个人不推荐这种写法
public function five()
{
return view('one',['title'=>'直接写到方法里','way' => '直接写到方法里<br>','name'=>'Tommy','sex'=>'male','age'=>24]);
// 或 return $this->fetch('one',['name'=>'Tommy','sex'=>'male','age'=>24]);
}
}