FuelPHP和Smarty - 变量不起作用

问题描述:

不知道Smarty是否正在加载,但它直接在页面上显示{$ title}和{$ username},并且没有使用设置的变量。FuelPHP和Smarty - 变量不起作用

我加入composer.json

“智者/智者”: “*”

我跑php composer.phar updateinstall

我加载的配置。 php文件解析器按照

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

在我的合作ntroller 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文件我有

{$标题} {$用户名}

这只是用于测试,但是似乎并没有正在工作。

+0

对不起,我迟到响应覆盖使用位于一个配置文件中的默认值,只是看到它。除了你不应该将视图封装到响应中,我没有看到任何立即错误的事情。您可以确定双括号用作分隔符,而不是单个大括号(默认情况下,请参阅解析器包中的parser.php配置文件)。 – WanWizard

FuelPHP的Parser包处理使用模板引擎的视图渲染。

正如你已经完成,你必须首先确保解析器包添加到always_load

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

解析器使用文件的扩展名,以确定要使用的解析器引擎使分析器包fuel/app/config.php。在你的情况下,你的文件dashboard/index.tpl使用典型的smarty扩展.tpl,但是FuelPHP没有为该扩展注册的模板。

FuelPHP默认使用.smarty

所以,你有2个选项。

  1. 更改模板的文件扩展名,秉承FuelPHP默认
  2. 变化FuelPHP的配置使用Smarty的为.tpl文件

好在都是很容易。如果您选择使用选项2,请查看default configuration definition

您可以在fuel/app/config/parser.php

return array(

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