FuelPHP和Smarty-变量不起作用



不确定Smarty是否正在加载,但它直接在页面上显示{$title}和{$username},而不使用设置的变量。

我添加到composer.json 中

"smarty/smarty":"*"

我运行php composer.phar updateinstall:

我正在config.php文件中按照加载解析器

'packages'  => array(
  'orm',
  'auth',
  'parser',
),

在我的控制器dashboard.php 中

public function action_index()
    {
        $data = [
        'bodyclass' => "dashboard",
        'title' => "Dashboard",
        'username' => "James"
    ];
        $view = Response::forge(View::forge('dashboard/index.tpl', $data));
        $this->template->subnav = array('dashboard'=> 'active' );
        $this->template->content = $view;
    }

在我的index.tpl文件中,我有

{$title}{$username}

这只是为了测试,但似乎不起作用。

FuelPHP的Parser包使用模板引擎处理视图的呈现。

正如您已经做过的那样,您必须首先在fuel/app/config.php中启用Parser包,确保将解析器包添加到always_load

'always_load' => array(
    'packages' => array(
        'parser',
    ),
),

解析器使用文件的扩展名来确定要使用哪个解析器引擎。在您的文件中,dashboard/index.tpl使用了一个典型的智能扩展.tpl,但是FuelPHP没有为该扩展注册模板。

FuelPHP默认使用.smarty

所以,你有两个选择。

  1. 更改模板的文件扩展名,遵守FuelPHP默认值
  2. 更改FuelPHP的配置,将Smarty用于.tpl文件

幸运的是,两者都很容易。如果选择使用选项2,请检查默认配置定义。

您可以使用位于fuel/app/config/parser.php 的配置文件覆盖默认值

return array(
    // Overrides default smarty extension
    'extensions' => array(
        'tpl' => 'View_Smarty',
    )
);

最新更新