控制器模板赋值

优质
小牛编辑
134浏览
2023-12-01

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

控制器基类的assign方法

<?php
namespace app\demo\controller;

use cmf\controller\HomeBaseController;

class IndexController extends HomeBaseController
{
    public function index()
    {
        // 单个变量赋值
        $this->assign("hello", "Hello ThinkCMF!");

        // 多个变量批量赋值
        $this->assign([
            'hello'  => 'Hello ThinkCMF!',
            'username' => '老猫'
        ]);
        return $this->fetch(':index');
    }
}

传入参数方法

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

<?php
namespace app\demo\controller;

use cmf\controller\HomeBaseController;

class IndexController extends HomeBaseController
{
    public function index()
    {
        return $this->fetch(':index',[
            'hello'  => 'Hello ThinkCMF!',
            'username' => '老猫'
        ]);
    }
}

display 方法:

<?php
namespace app\demo\controller;

use cmf\controller\HomeBaseController;

class IndexController extends HomeBaseController
{
    public function index()
    {
        $content = '{$hello}'."\n".'{$username}';
        return $this->display($content,[
            'hello'  => 'Hello ThinkCMF!',
            'username' => '老猫'
        ]);
    }
}

View 类的assign方法

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

\think\facade\View::assign('public_name', 'this is a name');

// 或者批量赋值
\think\facade\View::assign([
    'public_name1' => 'this is a name1',
    'public_name2' => 'this is a name2'
]);

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

变量输出

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

<div>{$hello}</div>
<div>{$username}</div>