я провел много времени, но я не решил
Я хотел бы передать LoggerInterface в действии моего контроллера
вот мой сервис.
# Learn more about services, parameters and containers at
# https://symfony.com/doc/current/service_container.html
parameters:
#parameter_name: value
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
# makes classes in src/AppBundle available to be used as services
# this creates a service per class whose id is the fully-qualified class name
AppBundle\:
resource: '../../src/AppBundle/*'
# you can exclude directories or files
# but if a service is unused, it's removed anyway
exclude: '../../src/AppBundle/{Entity,Repository,Tests}'
# controllers are imported separately to make sure they're public
# and have a tag that allows actions to type-hint services
AppBundle\Controller\:
resource: '../../src/AppBundle/Controller'
public: true
tags: ['controller.service_arguments']
# AppBundle\Controller\ArticlesController:
appbundle.form.type.articles:
class: AppBundle\Controller\ArticlesController
autowire: false
tags: ['controller.service_arguments']
вот мой контроллер
<?php
//AppBundle\Controller\ArticlesController.php
namespace AppBundle\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use AppBundle\Dto\ArticlesRequest;
use AppBundle\Form\ArticlesType;
use Psr\Log\LoggerInterface;class ArticlesController extends Controller
{
public function ListAction()
{
return $this->render("@App/Articles/list.html.twig");
}
public function CreateAction(Request $request, LoggerInterface $logger)
{
$createArticleRequest = new ArticlesRequest();
$form = $this->createForm(ArticlesType::class, $createArticleRequest);
return $this->render("@App/Articles/create.html.twig", array('form' => $form->createView()));
//return $this->render("@App/Articles/create.html.twig");
}
public function EditAction()
{
return $this->render("@App/Articles/edit.html.twig");
}
public function DeleteAction()
{
return $this->render("@App/Articles/delete.html.twig");
}
}
Это сообщение об ошибке:
Контроллер «AppBundle \ Controller \ ArticlesController :: CreateAction ()» требует, чтобы вы указали значение для аргумента «$ logger». Либо аргумент имеет значение NULL, и значение NULL не было предоставлено, значение по умолчанию не было предоставлено, либо после этого есть необязательный аргумент.
я разрешаю этот код
вместо
public function CreateAction(Request $request, EntityManagerInterface $logger)
этот
public function CreateAction(Request $request, EntityManagerInterface $logger = null)
добавить только = ноль
Других решений пока нет …