注:近来找到一个大神的博客,向大神学习中
ThinkPHP5学习002-向模板中传递变量
知识点
控制器可以向模板传递数据,并显示在模板中
$this->assign() 表示:给模板赋值,需要传递两个参数,
第一个参数:变量名
第二个参数:值(可以是数字,字符串,数组,对象)
【实践】
1. 改写模板文件index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h2>自我介绍</h2>
<div>学号:{$no}</div>
<div>姓名:{$name}</div>
</body>
</html>
在模板中输出变量的值,使用{},其中no,name就是控制器传递给模板的两个变量名
2. 在controller中的index.php向模板中传递变量
public function index()
{
//调用模板,模板文件名和方法名同名,即 index.html
$this->assign('no','1001');
$this->assign('name','张三');
return $this->fetch();
}
向模板传递了两个变量no,name,分别为1001、张三,
3. 测试一下
http://localhost:81/tp5/public/index.php/index/
成功
4.再修改一下控制器中的index.php,其中的show方法
先定义一个数组,再传递一个变量stu,向它传入一个数组
5.再修改一下模板文件:application\index\view\index中的show.html
准备了一个变量“stu”,以数组中的row,进循环
在模板中,输出二维数组的值,可以使用volist标签,这个标签是tp5模板自带的标签,主要用于循环输出二维数组中的值
其中,name属性的值是控制器传过来的变量,id 属性指定的变量自己随意定义
【知识点扩展】
thinkphp中的volist标签
属性:
name(必须):要输出的数据模板变量
id(必须):循环变量
offset(可选):要输出数据的offset
length(可选):输出数据的长度
key(可选):循环的key变量,默认值为i
mod(可选):对key值取模,默认为2
empty(可选):如果数据为空显示的字符串
◆Volist标签的name属性表示模板赋值的变量名称,因此不可随意在模板文件中改变。id表示当前的循环变量,可以随意指定,但需要确保不要和name属性冲突,
例如:在控制器中首先对模版赋值,如下例所示:
$User = M('User');
$list = $User->limit(10)->select();
$this->assign('list',$list);
在模版定义如下,循环输出用户的编号和姓名:
<volist name="list" id="vo">
{$vo.id}:{$vo.name}<br/>
</volist>
6.测试一下
http://localhost:81/tp5/public/index.php/index/index/show