Symfony 4.0 转换器 class 未注入控制器
Symfony 4.0 Translator class not injected to controller
我在新的 symfony 4 中遇到问题。
<?php
namespace App\Controller;
use App\Entity\Flight;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use App\Form\FlightType;
use Symfony\Component\Translation\Translator;
use Symfony\Component\HttpFoundation\Request;
/**
* Class DefaultController
* @package App\Controller
*/
class DefaultController extends Controller
{
/**
*
* @Route("/")
* @Route("/{_locale}/", name="homepage", requirements={"_locale" = "%app.locales%"})
*
* @param Translator $translator
* @param Request $request
*
* @return \Symfony\Component\HttpFoundation\RedirectResponse|Response
*/
public function index(Translator $translator, Request $request)
{
$translated = $translator->trans('Symfony is great');
错误:
控制器 "App\Controller\DefaultController::index()" 要求您为“$translator”参数提供一个值。参数可以为 null 且未提供 null 值、未提供默认值或因为此参数后有非可选参数。
配置:
service.yaml
services:
_defaults:
autowire: true
autoconfigure: true
public: false
...
App\Controller\:
autowire: true
resource: '../src/Controller'
tags: ['controller.service_arguments']
translation.yaml
framework:
default_locale: '%locale%'
translator:
paths:
- '%kernel.project_dir%/translations'
fallbacks: ['en']
找到答案。
- bin/console cache:clear 没有清除消息缓存。帮助硬删除 var/cache 文件夹。
- 我已经使用 Action(TranslatorInterface $translator) 注入控制器操作(可能是文档中的错误)
- $translator->trans('id') 不适用于 ID。它在使用 trans-unit 源标签时有效。
我在新的 symfony 4 中遇到问题。
<?php
namespace App\Controller;
use App\Entity\Flight;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use App\Form\FlightType;
use Symfony\Component\Translation\Translator;
use Symfony\Component\HttpFoundation\Request;
/**
* Class DefaultController
* @package App\Controller
*/
class DefaultController extends Controller
{
/**
*
* @Route("/")
* @Route("/{_locale}/", name="homepage", requirements={"_locale" = "%app.locales%"})
*
* @param Translator $translator
* @param Request $request
*
* @return \Symfony\Component\HttpFoundation\RedirectResponse|Response
*/
public function index(Translator $translator, Request $request)
{
$translated = $translator->trans('Symfony is great');
错误: 控制器 "App\Controller\DefaultController::index()" 要求您为“$translator”参数提供一个值。参数可以为 null 且未提供 null 值、未提供默认值或因为此参数后有非可选参数。
配置: service.yaml
services:
_defaults:
autowire: true
autoconfigure: true
public: false
...
App\Controller\:
autowire: true
resource: '../src/Controller'
tags: ['controller.service_arguments']
translation.yaml
framework:
default_locale: '%locale%'
translator:
paths:
- '%kernel.project_dir%/translations'
fallbacks: ['en']
找到答案。
- bin/console cache:clear 没有清除消息缓存。帮助硬删除 var/cache 文件夹。
- 我已经使用 Action(TranslatorInterface $translator) 注入控制器操作(可能是文档中的错误)
- $translator->trans('id') 不适用于 ID。它在使用 trans-unit 源标签时有效。