Зависимость от несуществующего шаблона службы

я пытался использовать

# app/config/services.yml
services:
    project.controller.some:
        class: Project\SomeBundle\Controller\SomeController
        arguments: ['@templating']

а также

namespace Project\SomeBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Templating\EngineInterface;
use Symfony\Component\HttpFoundation\Response;

class SomeController
{
    private $templating;

    public function __construct(EngineInterface $templating)
    {
        $this->templating = $templating;
    }

    public function indexAction()
    {
        return $this->templating->render(
            'SomeBundle::template.html.twig',
            array(

            )
        );
    }
}

в Symfony 4 flex. Теперь я получаю ошибку

ServiceNotFoundException

The service "project.controller.some" has a dependency on a non-existent service "templating".

Пожалуйста, скажите мне, как это решить. Мой composer.json уже содержит "symfony/templating": "^4.0", но этого недостаточно.


person Community    schedule 18.02.2018    source источник
comment
Еще один маленький шаг: stackoverflow.com/questions/48598593/   -  person Cerad    schedule 18.02.2018


Ответы (3)


С Symfony 4 вы также можете использовать новые функции DI (уже доступные начиная с Symfony 3.3):

Они упростят все до:

# app/config/services.yml
services:
    _defaults:
        autowired: true

    Project\SomeBundle\Controller\SomeController: ~

Если вы хотите узнать больше с реальными примерами до/после, прочитайте Как выполнить рефакторинг для новых функций внедрения зависимостей в Symfony 3.3

person Tomas Votruba    schedule 18.02.2018

Symfony 4 не включает Twig по умолчанию, поэтому вам нужно сначала установить его:

composer require twig

должен сделать трюк. Кроме того, с автоматическим связыванием сервисов в Symfony 4 вам не нужно вручную объявлять его в файле services.yml.

person Jakub Krawczyk    schedule 18.02.2018

Другое решение — добавить конфигурацию в framework, как описано в документе.

# app/config/packages/framework.yaml
framework:
    # ...
    templating: { engines: ['twig'] }
person yvoyer    schedule 30.03.2019