2014-01-15 34 views
1

我已经在我的CakePHP应用程序中安装了TwigView,我试图在名为default.twig.tpl的默认模板中加载元素header.twig.tplfooter.twig.tpl使用CakePHP帮手,TwigView插件无法正常工作

它正常工作与此:

<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 

    <title>Hello world!</title> 

</head> 
<body> 
{% element 'header.twig' %} 

    {{ test_var_from_controller }} <!-- this works and echoes "Hello world!" as expected --> 

{% element 'footer.twig' %} 
</body> 
</html> 

,当我尝试使用CakePHP默认Helpers的问题开始,他们根本不理。

我不知道为什么,如果我尝试:

<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 

    <title>Hello world!</title> 
    {{ html.css('styes.min') }} 
</head> 

的方法没有抛出错误被忽略,而该网页还那样工作也从来没有所谓。

我跟着所有的TwigView explanation但它仍然无法正常工作,我错过了什么?

我也想用嫩枝功能,他们似乎不加载某些原因:

{{ 'FOO'|low }} 

抛出错误:

Fatal error: Call to undefined function low() in .../app/Plugin/TwigView/tmp/views/2d/4b/65accc...92.php on line 45 
+0

show error please? – Anubhav

+0

正如我所说我没有得到错误,他们简直被忽略。 – vitto

+0

我还发现''{dump(method)'{{dump(some_var)}}'没有被twig发现,并且抛出一个错误:''Layouts/default.twig.tpl中不存在函数“dump”在线22' – vitto

回答

1

我发现这个问题,我需要加载助手AppController的第一

class AppController extends Controller { 
    public $viewClass = 'TwigView.Twig'; 
    public $ext = '.twig.tpl'; 
    public $helpers = array('Html', 'Form'); 
} 
0

内部在CakePHP 3中,如果使用的是WyriHaximus插件,你可以把它放在src/View/AppView.php中

namespace App\View; 
use WyriHaximus\TwigView\View\TwigView; 

/** 
* Application View 
*/ 
class AppView extends TwigView 
{ 
    /** 
    * Initialization hook method. 
    * Use this method to add common initialization code like loading helpers. 
    * e.g. `$this->loadHelper('Html');` 
    * @return void 
    */ 
    public function initialize() 
    { 
    parent::initialize(); 
    $this->loadHelper('Html'); 
    $this->loadHelper('Flash'); 
    $this->loadHelper('Url'); 
    ... 
    } 
}