[英]How to register a twig extension in PHP
我目前正在使用独立的twig(不适用于交响乐或作曲家),并且在文档中找不到有关如何在php中注册扩展的信息。
我的index.php文件看起来像这样
<?php
include 'exts/ext.php';
require_once 'Twig/Autoloader.php';
Twig_Autoloader::register();
$loader = new Twig_Loader_Filesystem('views');
$twig = new Twig_Environment($loader);
$twig->addExtension(new Test_Twig_Extension())
echo $twig->render('index.twig');
?>
我的扩展类看起来像这样(ext.php)
<?php
//require_once 'Twig/Extension.php';
//require_once 'Twig/ExtensionInterface.php';
class Test_Twig_Extension extends Twig_Extension {
public function getFunctions() {
return array(
new Twig_SimpleFunction('my_function', array($this,'my_function'))
);
}
public function my_function($arg1, $arg2) {
echo "Arg1: {$arg1} and Arg2: {$arg2}";
}
public function getName(){
return 'my_function';
}
}
?>
我收到以下错误:
致命错误:在第12行的C:\\ xampp \\ htdocs \\ Twig \\ Extension.php中找不到接口'Twig_ExtensionInterface'
我发现使用yaml设置文章的色调,但是我没有使用yaml。
我确定我没有正确注册,或者没有正确设置。
所以我发现的是以下内容:
自动加载时,您不需要/不包含类文件
您的扩展名应该以Twig_Extension_开头 (例如,我不得不将我的名字重命名为Twig_Extension_Test而不是Test_Twig_Extension,就像文档显示的那样)
确保您的Twig_Extension_Test类具有getName方法。
将扩展文件命名为类名的最后一部分。 因此,我必须将其称为Test.php。 我相信这也是区分大小写的。
将此文件放入Twig / Extension /文件夹中
调用$ twig-> addExtension(new Twig_Extension_Text());
我已经在问题中更新了代码以反映这些步骤
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.