视图赋值

  1. 在继承控制器基类的情况下,我们可以使用 assign()方法进行赋值;
    1. $this->assign('name', 'ThinkPHP'); //{$name}
  2. 也可以通过数组的方式,进行多个变量的赋值;
    1. $this->assign([
    2. 'username' => '辉夜', //{$username}
    3. 'email' => 'huiye@163.com' //{$email}
    4. ]);
  3. assign()方法和 fetch()方法也可以合二为一进行操作;
    1. return $this->fetch('index', [
    2. 'username' => '辉夜',
    3. 'email' => 'huiye@163.com'
    4. ]);
  4. 使用 display()方法,可以不通过模版直接解析变量;
    1. $content = '{$username}.{$email}';
    2. return $this->display($content, [
    3. 'username' => '辉夜',
    4. 'email' => 'huiye@163.com'
    5. ]);
  5. 使用 view()助手函数实现渲染并赋值操作;
    1. return view('index', [
    2. 'username' => '辉夜',
    3. 'email' => 'huiye@163.com'
    4. ]);
    5. return view('index')->assign([
    6. 'username' => '辉夜',
    7. 'email' => 'huiye@163.com'
    8. ]);
  6. 使用 View::share()静态方法,可以在系统任意位置做全局变量赋值;
    1. \think\facade\View::share('key', 'value');

    视图过滤

  7. 如果需要对模版页面输出的变量进行过滤,可以使用 filter()方法;
    1. $this->assign([
    2. 'username' => '辉 1 夜',
    3. 'email' => 'huiye@163.com'
    4. ]);
    5. return $this->filter(function($content){
    6. return str_replace("1",'<br/>',$content);
    7. })->fetch();
  8. 这里的$content 表示所有的模版变量,找到 1 之后,实现换行操作;
    3. 如果控制器有 N 个方法,都需要过滤,可以直接在初始化中全局过滤;
    1. public function initialize()
    2. {
    3. return $this->filter(function($content){
    4. return str_replace("1",'<br/>',$content);
    5. });
    6. }
  9. 也可以使用助手函数实现模版变量的过滤功能;
    1. return view()->filter(function($content){
    2. return str_replace("1",'<br/>',$content);
    3. });