gpt4 book ai didi

symfony - 将 Translator 服务注入(inject) FormType

转载 作者:行者123 更新时间:2023-12-02 14:26:04 28 4
gpt4 key购买 nike

我正在尝试找到一个最可重用的工作选项,以便能够从 FormType 进行翻译。

我的第一个选择是通过这种方式专门为每个 FormType 声明一个服务:

服务.yml

form.enquiry:
class: Acme\DemoBundle\Form\EnquiryType
arguments: [@translator]

查询类型.php

use Symfony\Component\Translation\Translator;
class EnquiryType extends AbstractType {

public $translator;
public function __construct(Translator $translator=null)
{
$this->translator = $translator;
}

public function buildForm(FormBuilderInterface $builder, array $options) {
$tr= $this->translator;
$msg=$tr->trans('default_error');
$builder->add ...

MyController.php

 $form = $this->container->get('form.enquiry')->create();
return $this->render('AcmeDemoBundle:Home:index.html.twig', array(
'form' => $form->createView()
));

出现此错误

FatalErrorException: Error: Call to undefined method Acme\DemoBundle\Form\EnquiryType::create()

我想知道如何通过更改代码来解决这个问题,甚至更好地找到一个更好的选项,使我能够将翻译服务注入(inject)到任何 FormType 中,而无需单独声明每个 FormType 服务。

最佳答案

您的EnqurityType必须返回整个表单,因此在buildForm中您应该创建整个表单

$builder
->setAction('action')
->setMethod('POST')
->add('field', 'field_type')

在构造函数中,您应该为 TranslatorInterface 键入提示,其称为契约设计

关于symfony - 将 Translator 服务注入(inject) FormType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24753436/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com