這個問題在這里已經有了答案: Symfony:在服務中顯式定義容器 4 個答案 如何從服務訪問應用程式引數? (9 個回答) 如何在 symfony2 的控制器中讀取 parameters.yml? (8 個回答) Symfony 4:“Autowire:你應該明確地配置它的值。” (2 個回答) 15 天前關閉。
我正在將應用程式從 Symfony 4.4 遷移到 Symfony 5.4。在表單的情況下,我有一個表單,我在建構式中傳遞了一個變數ContainerInterface $container,以在小部件的配置中使用引數。在 5.4 版中,這給了我一個棄用警告:
從 symfony/dependency-injection 5.1 開始:“Symfony\Component\DependencyInjection\ContainerInterface”自動裝配別名已被棄用。如果您想繼續使用它,請在您的應用程式中明確定義它。它被“App\Form\BuscarAvanzadaNinhoType”服務參考。
我該如何解決?
class BuscarAvanzadaNinhoType extends AbstractType {
private $em;
private $security;
private $uuidEncoder;
private $container;
public function __construct(ManagerRegistry $em, Security $security, UuidEncoder $uuidEncoder, ContainerInterface $container) {
$this->em = $em;
$this->security = $security;
$this->uuidEncoder = $uuidEncoder;
$this->container = $container;
}
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('otrosAspectos', Select2EntityType::class, array(
'class' => EtiquetaAspectoNinho::class,
'remote_route' => 'ninhos_encontrarEtiquetaAspectos',
'primary_key' => 'id',
'text_property' => 'text',
'multiple' => true,
'allow_clear' => false,
'delay' => 250,
'cache' => false,
'minimum_input_length' => 3,
'scroll' => true,
'page_limit' => $this->container->getParameter('limite_resultados_etiquetas'),
'language' => 'es',
'width' => '100%',
'placeholder' => '',
)
);
}
}
uj5u.com熱心網友回復:
您可以不使用容器直接傳遞引數。
public function __construct(ManagerRegistry $em, Security $security, UuidEncoder $uuidEncoder, array $formParams) {
$this->em = $em;
$this->security = $security;
$this->uuidEncoder = $uuidEncoder;
$this->formParams = $formParams;
}
服務.yml
services:
_defaults:
autowire: true
autoconfigure: true
bind:
$formParams:
limite_resultados_etiquetas: '%limite_resultados_etiquetas%'
在表格中:
'page_limit' => $this->formParams['limite_resultados_etiquetas'],
uj5u.com熱心網友回復:
不要使用 ContainerInterface,而是使用 ContainerBagInterface
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/425518.html
上一篇:更改TwigLoader順序
下一篇:如何創建彼此不同的亂數向量?
