我已在我的CakePHP
应用程序中安装了TwigView,并且我尝试在名为header.twig.tpl
的默认模板中加载元素footer.twig.tpl
和default.twig.tpl
。
它适用于此:
<!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 ,但它仍然无效,我失踪了什么?
我也尝试使用Twig功能,但由于某些原因它们似乎没有加载:
{{ 'FOO'|low }}
引发错误:
Fatal error: Call to undefined function low() in .../app/Plugin/TwigView/tmp/views/2d/4b/65accc...92.php on line 45
答案 0 :(得分:1)
我发现了问题,我需要首先在AppController中加载Helpers
class AppController extends Controller {
public $viewClass = 'TwigView.Twig';
public $ext = '.twig.tpl';
public $helpers = array('Html', 'Form');
}
答案 1 :(得分: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');
...
}
}