0

SonataUserBundle で登録フォームをオーバーライドしようとすると、「タイプ "sonata_user_registration" を読み込めませんでした」というエラーが表示されました。この問題の解決策を検索しましたが、どれも役に立ちません。テンプレートのオーバーライドに成功しましたが、登録フォームのオーバーライド (年齢フィールドの追加) が必要なので、いくつかのコードを追加しました

//app/Application/Sonata/UserBundle/Entity/User.php
  /**
     * @ORM\Column(type="string", length=255)
     *
     * @Assert\NotBlank(message="Please enter your name.", groups={"Registration", "Profile"})
     */
    protected $age;


        public function getAge()
    {
        return $this->age;
    }

        public function setAge($age)
    {
         $this->a=$age;
    }

しかし、php app/console doctrine:schema:update --force を実行すると、My RegistrationFormType を更新するように何も指示されませんでした:

  //app/Application/Sonata/UserBundle/Form/Type/RegistrationFormType.php
namespace Application\Sonata\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);
        $builder->add('age');
    }

    public function getName()
    {
        return 'sonata_user_registration';
    }
        public function getParent()
    {
        return 'fos_user_registration';
    }

}

私のservices.yml:

//app/Application/Sonata/UserBundle/Resources/config/services.yml
services:
    sonata_user.registration.form.type:
    class: Application\Sonata\UserBundle\Form\Type\RegistrationFormType
    arguments: [ "%fos_user.model.user.class%"]
    tags:
        - { name: form.type, alias: sonata_user_registration }

config.yml:

fos_user:
    user_class:     Application\Sonata\UserBundle\Entity\User
    group:
        group_class:   Application\Sonata\UserBundle\Entity\Group
        group_manager: sonata.user.orm.group_manager
    service:
        user_manager: sonata.user.orm.user_manager 
    registration:
        form:
            type: sonata_user_registration 
sonata_user:
    security_acl: true
    manager_type: orm 

//app/Application/Sonata/UserBundle/DependencyInjection の私の DependencyInjection

namespace Application\Sonata\UserBundle\DependencyInjection;

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

class SonataUserExtension extends Extension
{
    public function load(array $configs, ContainerBuilder $container)
    {
        $loader = new YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
        $loader->load('services.yml');
    }
}
4

0 に答える 0