1

我在 Symfony 2.2 中我想通过服务创建一个小联系表。我玩弄了服务配置和表单组件工厂,但每次我遇到以下异常:

An exception has been thrown during the rendering of a template ("Catchable Fatal Error: Argument 1 passed to Symfony\Component\Form\Form::__construct() must be an instance of Symfony\Component\Form\FormConfigInterface, string given


parameters:
  anchorbrands_common.contact.form.type.class: Anchorbrands\Bundle\CommonBundle\Form\Type\ContactFormType
  anchorbrands_common.contact.form.name: anchorbrands_commonbundle_contactformtype

services:
  anchorbrands_common.footer.contact.form:
    class: Symfony\Component\Form\Form
    factory-method: createNamed
    factory-service: form.factory
    arguments: ["%anchorbrands_common.contact.form.type.class%", "null"]

  anchorbrands_common.footer.contact.form.type:
    class: %anchorbrands_common.contact.form.type.class%
    arguments: ["null"]
    tags:
        - { name: form.type, alias: %anchorbrands_common.contact.form.name% }

如果有人能给我一些建议,那就太好了,谢谢。

4

2 回答 2

2

由于拼写错误,我遇到了同样的问题:

  • factory-method并且factory-service是错误的,factory_method并且factory_service是正确的。

我不确定您是否可以将 a%parameter%用作alias您的form.type标签:

  • 如果您仍然有疑虑,请尝试使用原始字符串(anchorbrands_commonbundle_contactformtype在您的情况下)。

您的服务中缺少一个参数anchorbrands_common.footer.contact.form,第一个参数似乎是错误的:

  • 请尝试:([anchorbrands_commonbundle_contactformtype, anchorbrands_commonbundle_contactformtype, null]表单名称和表单类型的别名可以相同)

  • 如果可行,请尝试使用%anchorbrands_common.contact.form.name%等效参数。

我希望这可以帮助你。

参考:将 Symfony 2 表单定义为服务

于 2014-02-12T14:55:00.817 回答
0

你为什么用双倍配额来围绕你的论点?

尝试以这种方式更改(您不需要字符串,但我想您根本不需要字符串)参数段落:

services:
  anchorbrands_common.footer.contact.form:
    class: Symfony\Component\Form\Form
    factory-method: createNamed
    factory-service: form.factory
    arguments: [%anchorbrands_common.contact.form.type.class%, null]

  anchorbrands_common.footer.contact.form.type:
    class: %anchorbrands_common.contact.form.type.class%
    arguments: [null]
    tags:
        - { name: form.type, alias: %anchorbrands_common.contact.form.name% }

记住

错误报告很重要,您应该仔细阅读它们,因为它们可以帮助您很多

于 2013-04-24T07:32:04.167 回答