【问题标题】:Define form as service in Symfony 3在 Symfony 3 中将表单定义为服务
【发布时间】:2016-02-18 13:24:59
【问题描述】:

我需要将我的表单定义为服务,以便可以向其中注入一些依赖项(例如实体管理器)。我按照 http://symfony.com/doc/current/cookbook/form/create_custom_field_type.html#creating-your-field-type-as-a-service 上的教程进行操作,但结果是

可捕获的致命错误:传递给 MyFirm\Form\ItemAmountType::__construct() 的参数 1 必须是 MyFirm\Form\EntityManager 的实例,没有给出,在 /var/www/html/ordering-system/vendor/ 中调用symfony/symfony/src/Symfony/Component/Form/FormRegistry.php 在第 85 行并定义

我有一个注册为服务的表单:

services:
    my_firm.form.item_amount:
        class: MyFirm\Form\ItemAmountType
        arguments: [ "@doctrine.orm.entity_manager", "@price_list_manager" ]

然后我在控制器中创建表单:

$itemAmount = new ItemAmount();
$form = $this->createForm( ItemAmountType::class, $itemAmount );

表单的构造:

class ItemAmountType extends AbstractType {

    private $em;
    private $priceListManage;

    public function __construct(EntityManager $entityManager, PriceListManager $priceListManager) {
        $this->em = $entityManager;
        $this->priceListManage = $priceListManager;
    }
    //...
}

问题出在哪里?

【问题讨论】:

  • 您在服务中遗漏了表单标签:标签:[{ name: form.type }]

标签: php forms service symfony


【解决方案1】:

我省略了表单标签

service:
    tags: [{ name: form.type }]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-25
    • 1970-01-01
    • 2018-04-19
    • 2016-06-02
    • 1970-01-01
    • 2013-11-21
    相关资源
    最近更新 更多