模板赋值

除了系统变量和配置参数输出无需赋值外 其 变量如果需要在模板中输出必须首先进行模板赋值操作 否则会抛出异常 传递数据到模板输出有下面几种方式:

assign方法

在控制器继承了系统的控制器基类的情况下 可以使用assign方法进行模板变量赋值。

namespace indexappcontroller;

class Index extends thinkController
{
    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');
    }
}

方法传入参数

方法fetchdisplay 均可传入模板变量 例如

namespace appindexcontroller;

class Index extends thinkController
{
    public function index()
    {
        return $this->fetch('index', [
            'name'  => 'ThinkPHP',
            'email' => 'thinkphp@qq.com'
        ]);
    }
}
class Index extends thinkController
{
    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 thinkfacadeView;
// 赋值全局模板变量
View::share('name','value');
// 或批量赋值
View::share(['name1'=>'value','name2'=>'value2']);

全局静态模板变量最终会和前面使用方法赋值的模板变量合并。