Symfony 4 TwigFunction не регистрируется - PullRequest
0 голосов
/ 23 сентября 2019

Я пишу функцию Twig в Symfony 4, но не могу заставить ее работать ...

Класс расширения

<?php

namespace App\Twig;

use App\Utils\XXX;
use Twig\Extension\AbstractExtension;
use Twig\TwigFunction;

class XXXExtension extends AbstractExtension
{
    /**
     * @return array|TwigFunction|TwigFunction[]
     */
    public function getFunctions()
    {
        return new TwigFunction('showControllerName', [$this, 'showControllerName']);
    }


    public function showControllerName($sControllerPath)
    {
        return XXX::getControllerName($sControllerPath);
    }
}

У меня autowire установлен на true в services.yaml , но на всякий случай я попытался также:

    App\Twig\XXXExtension:
        public: true
        tags:
            - { name: twig.extension }

использование в html.веточка

{% set controllerName = showControllerName(app.request.get('_controller')) %}

и ответ, который я получаю после этого:

HTTP 500 Internal Server Error
Unknown "showControllerName" function.

1 Ответ

1 голос
/ 23 сентября 2019

Вам нужно вернуть массив функций, вы возвращаете только одну.

    ...
    public function getFunctions()
    {
        return [
            new TwigFunction('showControllerName', [$this, 'showControllerName']),
        ];
    }
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...