多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 视图赋值 ## 模板赋值 除了系统变量和配置参数输出无需赋值外,其他变量如果需要在模板中输出必须首先进行模板赋值操作,否则会抛出异常,传递数据到模板输出有下面几种方式: ### `assign`方法 在控制器继承了系统的控制器基类的情况下,可以使用`assign`方法进行模板变量赋值。 ``` namespace index\app\controller; class Index extends \think\Controller { public function index() { // 模板变量赋值 $this->assign('name','ThinkPHP'); $this->assign('email','thinkphp@qq.com'); // 或者批量赋值 $this->assign([ 'name' => 'ThinkPHP', 'email' => 'thinkphp@qq.com' ]); // 模板输出 return $this->fetch('index'); } } ``` ### 方法传入参数 方法`fetch` 及 `display` 均可传入模板变量,例如 ``` namespace app\index\controller; class Index extends \think\Controller { public function index() { return $this->fetch('index', [ 'name' => 'ThinkPHP', 'email' => 'thinkphp@qq.com' ]); } } ``` ``` class Index extends \think\Controller { public function index() { $content = '{$name}-{$email}'; return $this->display($content, [ 'name' => 'ThinkPHP', 'email' => 'thinkphp@qq.com' ]); } } ``` ### 助手函数 如果使用`view`助手函数渲染输出的话,可以使用下面的方法进行模板变量赋值: ``` return view('index', [ 'name' => 'ThinkPHP', 'email' => 'thinkphp@qq.com' ]); ``` 或者 ``` return view('index')->assign([ 'name' => 'ThinkPHP', 'email' => 'thinkphp@qq.com' ]); ``` ### 公共模板变量赋值 如果需要在控制器之外进行模板变量赋值,可以使用视图类的`share`静态方法进行全局公共模板变量赋值,例如: ``` use think\facade\View; // 赋值全局模板变量 View::share('name','value'); // 或者批量赋值 View::share(['name1'=>'value','name2'=>'value2']); ``` 全局静态模板变量最终会和前面使用方法赋值的模板变量合并。