我有Twig Extension的问题。我想检查我的变量是否与正则表达式匹配。但我得错了。
我的枝条扩展类:
<?php
// src/GL/HomeBundle/Twig/LastNameExtension.php
namespace GL\HomeBundle\Twig;
class LastNameExtension extends \Twig_Extension
{
public function getFunctions()
{
return array(
new \Twig_SimpleFunction('lastName', 'lastNameFunction')
);
}
public function lastNameFunction($lastName)
{
$pattern = "/^[1-9]\d\d\-\d\d\d\-\d\d\-\d\d$/";
return preg_match($pattern, $lastName);
}
public function getName()
{
return 'lastName';
}
}
?>
我的services.xml文件的一部分
<services>
<service id="gl.twig.lastName" class="GL\HomeBundle\Twig\LastNameExtension">
<tag name="twig.extension" />
</service>
</services>
我得到的错误是:
: Error: Call to undefined function lastNameFunction() in C:\xampp\htdocs\wp_ubezpieczenia\app\cache\dev\twig\10\4c\8503d697949a099f75aa8c4c41a2.php line 156
我将非常感谢您对此的任何帮助。
答案 0 :(得分:3)
将new \Twig_SimpleFunction('lastName', 'lastNameFunction')
替换为new \Twig_SimpleFunction('lastName', array($this, 'lastNameFunction'))
,否则您将调用函数“lastNameFunction”,而不是方法“LastNameExtension :: lastNameFunction”。
答案 1 :(得分:-1)
使用
'lastName'=> new \Twig_Function_Method($this, 'lastNameFunction')
而不是
并使用
在树枝中调用函数 {{ lastName(myvalue) }}