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です。

タグの%parameter%としてaaliasを使用できるかどうかわかりません: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 に答える