0

我收到一个错误:“twig extension FatalErrorException: Error: Class Acme\Bundle\MyBundle\Twig not found in app/cache/dev/appDevDebugProjectContainer.php”

我已经清除了缓存,但这什么也没做。

我只是试图测试设置它,然后我可以输入我所有的逻辑。

--

一个名为 MyTwigExtensions.php 的文件

namespace Acme\Bundle\MyBundle\Twig;

class MyTwigExtensions extends \Twig_Extension
{

    public function getFunctions() {    
        return array(
            new Twig_SimpleFunction('link', 'generate_link')
        );
    }

    public function generate_link($params) {

        return "THE-LINK-HERE";

    }

    public function getName() {

        return "link";

    }

}

在 services.yml

services:
  my_extension.twig.extension:
    class: Acme\Bundle\MyBundle\Twig
    arguments: []
    tags:
      - { name: twig.extension }
4

3 回答 3

3

您必须输入扩展类的完全限定名称。

services:
  my_extension.twig.extension:
    class: Acme\Bundle\MyBundle\Twig\MyTwigExtensions # <--- here
    arguments: []
    tags:
      - { name: twig.extension }
于 2013-03-29T13:17:28.017 回答
1

对于服务表示格式是这样的。下面的 addArrowInCode 是 twig 中使用的方法的名称:

twig.extension.addArrowInCode:
       class: Acme\DemoBundle\Twig\AddArrowInCodeExtension
       tags:
           - { name: twig.extension }

对于这个扩展,你应该喜欢......

class AddArrowInCodeExtension extends \Twig_Extension
{
    function addArrowInCodeFilter($code, $separator = '&rArr;')
    {
        // do sth setting final

        return $final;
    }

    /**
     * Returns a list of filters to add to the existing list.
     *
     * @return array An array of filters
     */
    public function getFilters()
    {
        return array(
            'addArrowInCode' => new Twig_Filter_Method($this, 'addArrowInCodeFilter', array('needs_environment' => false)),
        );
    }

    public function getName()
    {
        return 'addArrowInCode';
    }
}

希望能帮助到你

于 2013-03-29T13:49:13.407 回答
0

请检查此代码。

namespace Acme\Bundle\MyBundle\Twig;

class MyTwigExtensions extends \Twig_Extension
{

    public function getFunctions() {    
        return array(
            new Twig_SimpleFunction('link', array($this, 'generate_link')) // <== changed here
        );
    }

    public function generate_link($params) {

        return "THE-LINK-HERE";

    }

    public function getName() {

        return "link";

    }

}

在 services.yml

services:
  my_extension.twig.extension:
    class: Acme\Bundle\MyBundle\Twig\MyTwigExtensions # <== changed here
    arguments: []
    tags:
      - { name: twig.extension }
于 2016-10-01T13:25:10.243 回答