开启辅助访问
帐号登录 |立即注册

ThinkPHP模板变量赋值的5种方法

 
一、通过assign()方法

assign()方法即可以用视图类,也可以用控制器调用(继承基类)
一、单独赋值: $this->assign('变量名', '值');
$this -> assign('domain', 'php.cn'); // $domain = 'php.cn'
二、批量赋值: $this->assign(['变量名1'=> '值2',]'变量名1'=>'值2...);
$this -> assign([
'domain' => 'www.php.cn',
'siteName' => 'php中文网'
]);
举例:
修改index控制器的Index.php文件。
<?php
namespace app\ index \controller;
class Index extends \ think\ Controller
{
public function index( )
{
//单独赋值
$this -> assign( 'siteName ','www.php.cn');
//批量赋值
$this -> assign( [
'name'=>'朱老师',
'Lesson'=> 'php'
]);
//渲染模板
return $this -> fetch();
}
}
修改Index方法对应的模板文件
<p>网站域名: <span style="color: red">{$siteName}</span></p>
<p>我的姓名: <span style="color: red">{$name}</span></p>
<p>我的课程:<span style="color: red">{$lesson}</span></p>


二、fetch( )或display()方法传参赋值

一、$this->fetch('模板文件', ['变量名1'=>'值1', '变量名1'=>'值...])
return $this -> fetch('index' ,['name'=>'Peter',age'=>28]);
二、$this -> display('内容', ['变量名1'=>'值1','变量名1'=>'值...'])
return $this -> display( '姓名:{$name}年龄:{$age}',[
'name'=>'Peter',
'age'=>28
]);
举例:
<?php
namespace app\ index\controller;
class Index extends \ think\ Controller
{
public function index()
{
//渲染模板
return $this -> fetch( ' index', [
'name'=> 'Peter',
'Lesson'=>'php'
]);
return $this -> display( '姓名: {$name} ,课程: {$lesson}',
[
'name'=> 'Peter' ,
‘lesson'=> ' php';
]);
}

三、给视图对象添加属性的方式赋值


1、先获取视图对象,通过给它动态添加属性方式给模板赋值
2、继承基类: $this->view-> name = $value;
3、视图类: \think\View:instance()-> name = $value;
举例:
<?php
namespace app\ index\ controller;
// class Index extends \ think\Controller
class Index
{
public function index( )
{
// $this -> view -> name = '朱老师' ;
\ think\View: : instance() -> name = '朱老师';
// $this -> view -> lesson = ' JavaScript';
\think\View: : instance() -> lesson ='HTML5';
return \ think\View: : instance() -> fetch() ;
}
}


四、用share()方法给模板添加静态变量

1、支持在任何地方使用静态方法进行模板变量赋值
2、 视图类调用: \think\View::share( $name, $value);
3、 控制器继承调用: $this->view->share( $name, $value);//不推荐
举例:
<?php
namespace app\ index\ controller;
class Index
{
public function index()
{
\think\View: : share(' siteName ', ' php中文网' );
return \think\View: : instance() -> fetch();
}
}


五、用助手函数view()向模板赋值

1、view()不依赖控制器继承和视图类,可随时调用;
2、单独赋值: view($name, $value);
3、批量赋值: view(['key1'=>'value1','key1'=>'value1...];
<?php
namespace app\ index \ controller;
class Index
{
public function index( )
{
return view( ' index', [
'name '=> '张老师' ,
'lesson'=> 'CSS' ,
' domain'=> 'www.jscripthome.com'
]);
}
}

总结:尽管有多种方式向模板赋值,但在一个项目中,尽可能保持统一-的赋值风格。推荐继承控制器类,使用assign()方法,当然,传参赋值也是一个不错的选择,不推荐使用助手函数view()~~

回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

友情链接
  • 艾Q网

    提供设计文章,教程和分享聚合信息与导航工具,最新音乐,动漫,游戏资讯的网站。