0

イベントリスナーで使用するために、リポジトリを登録フォームに挿入できるようにしたいのですが(このアプローチに似ています)、次のようになります。

キャッチ可能な致命的なエラー: AppBundle\Form\RegistrationType::__construct() に渡される引数 1 は > AppBundle\Entity\FocusRepository のインスタンスである必要があります。指定された文字列は G:\Documents\workspace で呼び出されます> \match\vendor\pugx\multi -user-bundle\PUGX\MultiUserBundle\Model\UserDiscriminator.php 155 行目

テンプレートでこれを回避できますが、イベント リスナーを使用する方がより洗練されたソリューションに思えました。助言がありますか?

namespace AppBundle\Form;

use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use FOS\UserBundle\Form\Type\RegistrationFormType;
use AppBundle\Entity\FocusRepository;

class RegistrationType extends RegistrationFormType
{
    private $focusRepo;

    public function __construct(FocusRepository $focusRepo)
    {
        $this->focusRepo = $focusRepo;
    }

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
   ...
    }
   ...
}

サービス:

services:
    app.focus_repository:
        class: Doctrine\ORM\EntityRepository
        factory_service: doctrine.orm.default_entity_manager
        factory_method: getRepository
        arguments:
            - AppBundle\Entity\Focus
4

1 に答える 1

0

このエラーは、PUGXMultiUserBundle が FOSUserBundle 登録 (およびプロファイル) フォームを使用するために発生します。これらのフォームには、コンストラクターに文字列 (ユーザーのクラスを示す) が既に含まれています。私はこの質問を放棄し、別のアプローチを使用しています。しかし、コンパイラ パスを使用して FOSUserBundle 登録フォーム サービスをオーバーライドし、追加のパラメーターを許可することもできたはずです。そのため、解決策は存在しましたが、試されることはありませんでした。

于 2015-10-27T22:49:35.417 に答える