变量如果要在模板中使用,就必须先进行模板赋值才可以,但系统变量和配置参数可以不用赋值(我们会在模板章节介绍如何输出)

控制器基类的assign方法

  1. <?php
  2. namespace app\portal\controller;
  3. use cmf\controller\HomeBaseController;
  4. class IndexController extends HomeBaseController
  5. {
  6. public function index()
  7. {
  8. // 单个变量赋值
  9. $this->assign("hello", "Hello ThinkCMF Portal!");
  10. // 多个变量批量赋值
  11. $this->assign([
  12. 'hello' => 'Hello ThinkCMF Portal!',
  13. 'username' => '老猫'
  14. ]);
  15. return $this->fetch(':index');
  16. }
  17. }

传入参数方法

控制器基类的fetchdisplay 方法都可以通过参数传入模版变量,如: fetch方法:

  1. <?php
  2. namespace app\portal\controller;
  3. use cmf\controller\HomeBaseController;
  4. class IndexController extends HomeBaseController
  5. {
  6. public function index()
  7. {
  8. return $this->fetch(':index',[
  9. 'hello' => 'Hello ThinkCMF Portal!',
  10. 'username' => '老猫'
  11. ]);
  12. }
  13. }

display 方法:

  1. <?php
  2. namespace app\portal\controller;
  3. use cmf\controller\HomeBaseController;
  4. class IndexController extends HomeBaseController
  5. {
  6. public function index()
  7. {
  8. $content = '{$hello}'."\n".'{$username}';
  9. return $this->display($content,[
  10. 'hello' => 'Hello ThinkCMF Portal!',
  11. 'username' => '老猫'
  12. ]);
  13. }
  14. }

View 类的share方法

此方法支持在任何地方使用进行模板变量赋值,如:

  1. \think\View::share('public_name', 'this is a name');
  2. // 或者批量赋值
  3. \think\View::share([
  4. 'public_name1' => 'this is a name1',
  5. 'public_name2' => 'this is a name2'
  6. ]);

通过此方法设置的模板变量最后会和上面几种方法赋值的变量合并。

变量输出

通过以上方法赋值后,就可以在模板里使用这些变量,这里演示一下变量的输出,更多变量操作会在模板章节说明;

  1. <div>{$hello}</div>
  2. <div>{$username}</div>

原文: https://www.thinkcmf.com/docs/cmf/控制器模板赋值.html