4

FOSUserBundle で登録フォームを上書きしようとしていますが、このエラーが発生します:公式ドキュメントのこのチュートリアルに従っています: リンク

Could not load type "uae_user_registration"

私のファイルは次のとおりです:services.yml

# src/Uae/UserBundle/Resources/config/services.yml 
services:
    uae_user.registration.form.type:
        class: Uae\UserBundle\Form\Type\RegistrationFormType
        arguments: [%fos_user.model.user.class%]
        tags:
        - { name: form.type, alias: uae_user_registration }

config.yml:

アプリ/設定/config.yml

fos_user:
    db_driver:     orm                         
    firewall_name: main                       
    user_class:    Uae\UserBundle\Entity\User 
    registration:
            form:
                type: uae_user_registration

登録フォームの種類:

<?php
#src/Uae/UserBundle/Form/Type/RegistrationType.php

namespace Uae\UserBundle\Form\Type;

use Symfony\Component\Form\FormBuilderInterface;
use FOS\UserBundle\Form\Type\RegistrationFormType as BaseType;

class RegistrationFormType extends BaseType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
    parent::buildForm($builder, $options);

    // add your custom field
    $builder->add('nom');
    $builder->add('prenom');
}

public function getName()
{
    return 'uae_user_registration';
}
}
4

2 に答える 2

9

私は私の問題を解決しました:設定ファイル app\config\config.yml で作成した新しいサービスをインポートしました

imports:
    - { resource: @UaeUserBundle/Resources/config/services.yml }
于 2012-06-11T16:19:40.067 に答える
6

エラーが発生する理由は、特定のバンドルに DependencyInjection がないためです。プログラムは、services.yml ファイルを探す場所を認識していません。

ユーザー バンドルの下の DependencyInjection フォルダー内に UaeUserExtension.php と Configuration.php が必要です。

これに対する簡単な解決策は、app/console の generate:bundle を介してバンドルを生成することです。このようにして、自動的に DependencyInjection が作成されます。

手動の解決策は、Uae/UserBundle 内に DependencyInjection フォルダーを作成することです。DependencyInjection 内で、Configuration.php というファイルを作成し、以下の内容を配置します。

<?php

namespace Uae\UserBundle\DependencyInjection;

use Symfony\Component\Config\Definition\Builder\TreeBuilder;
use Symfony\Component\Config\Definition\ConfigurationInterface;

class Configuration implements ConfigurationInterface
{
    /**
     * {@inheritDoc}
     */
    public function getConfigTreeBuilder()
    {
        $treeBuilder = new TreeBuilder();
        $rootNode = $treeBuilder->root('uae_user');

        return $treeBuilder;
    }
}

同じディレクトリ内に UaeUserExtension.php というファイルを作成し、次の内容を配置します。

<?php

namespace Uae\UserBundle\DependencyInjection;

use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\Loader;

class EnergyUserExtension extends Extension
{
    /**
     * {@inheritDoc}
     */
    public function load(array $configs, ContainerBuilder $container)
    {
        $configuration = new Configuration();
        $config = $this->processConfiguration($configuration, $configs);

        $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
        $loader->load('services.yml');
    }
}
于 2012-06-13T23:39:38.137 に答える