Symfony не загружает расширение Twig во время выполнения - PullRequest
0 голосов
/ 27 мая 2018

Я следовал примеру на Symfony 3.4 docs , чтобы загрузить расширение Twig во время выполнения, но оно не загружается: что я делаю неправильно?

IN: src / PlotlyBundle / Twig / AppRuntime.php

<?php
namespace PlotlyBundle\Twig;

class AppRuntime
{
    public function __construct()
    {
    }

    public function biDraw()
    {
        return 'awesome text here';
    }
}

IN: src / PlotlyBundle / Resources / config / services.yml

services:
    plotly.twig_runtime:
        class: PlotlyBundle\Twig\AppRuntime
        public: true
        tags:
            - { name: twig.runtime }

IN: src / PlotlyBundle / Twig / AppExtension.php

<?php
namespace PlotlyBundle\Twig;

use PlotlyBundle\Twig\AppRuntime;

class AppExtension extends \Twig_Extension
{
    public function getFunctions()
    {    
        return [
            new \Twig_SimpleFunction(
                'bi_draw',
                array(AppRuntime::class, 'biDraw')
            ),
        ];
    }
}

IN: src / AppBundle / Controller / DashboardController.php

   $twig = $this->get('plotly.twig_runtime');
    return $this->render(
        'dashboard/index.html.twig'
    );

IN: app / Resources / views / dashboard / index.html.twig

{{ bi_draw() }}

1 Ответ

0 голосов
/ 28 мая 2018

Благодаря комментариям @Federkun я исправил это путем автоматического подключения расширения Twig:

IN: src / PlotlyBundle / Resources / config / services.yml

services:
    # default configuration for services in *this* file
    _defaults:
        # automatically injects dependencies in your services
        autowire: true
        # automatically registers your services as commands, event subscribers, etc.
        autoconfigure: true
        # this means you cannot fetch services directly from the container via $container->get()
        # if you need to do this, you can override this setting on individual services
        public: false

    # this creates a service per class whose id is the fully-qualified class name
    PlotlyBundle\Twig\:
        resource: '../../../../src/PlotlyBundle/Twig/*'
        tags:
            - { name: twig.runtime }

В примере на документах Symfony ( Создание лениво-загруженных расширений веток ) необходимо обновить, чтобы упомянуть, что автоматическое подключение ДОЛЖНО быть включено (как описано в Параметр автоконфигурирования ), чтобы пример работал.

Я отправил PR в документы Symfony.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...