0

我对 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

对于这方面的任何帮助,我将不胜感激。

4

2 回答 2

3

替换new \Twig_SimpleFunction('lastName', 'lastNameFunction')new \Twig_SimpleFunction('lastName', array($this, 'lastNameFunction')),否则您调用的是函数“lastNameFunction”,而不是方法“LastNameExtension::lastNameFunction”。

于 2013-10-09T11:12:06.243 回答
-1

use

'lastName'=> new \Twig_Function_Method($this, 'lastNameFunction') instead

and call function in twig with

{{ lastName(myvalue) }}

于 2013-10-09T12:44:32.207 回答