簡體   English   中英

Symfony FOSUserBundle無法覆蓋表單,無效

[英]Symfony FOSUserBundle cannot override form, no effect

本文中,我試圖覆蓋RegisterFormType.php,但看不到結果,但是Symfony Profiler在fos_user_registration表單中顯示的內容被app_user_registration覆蓋。

首先,我在AppKernel.php中:

new FOS\UserBundle\FOSUserBundle(),
new Sonata\UserBundle\SonataUserBundle('FOSUserBundle'),
new Application\Sonata\UserBundle\ApplicationSonataUserBundle(),

services.yml

app.form.registration:
    class: Application\Sonata\UserBundle\Form\RegistrationFormType
    tags:
        - { name: form.type, alias: app_user_registration }

config.yml:

fos_user:
    db_driver:      orm # can be orm or odm
    firewall_name:  main
    user_class:     Application\Sonata\UserBundle\Entity\User
    use_listener: true
    group:
        group_class:   Application\Sonata\UserBundle\Entity\Group
        group_manager: sonata.user.orm.group_manager                    # If you're using doctrine orm (use sonata.user.mongodb.group_manager for mongodb)

    service:
        user_manager: sonata.user.orm.user_manager                      # If you're using doctrine orm (use sonata.user.mongodb.user_manager for mongodb)
    registration:
        form:
            type: app_user_registration
            #validation_groups: [AppRegistration]
    profile:
        form:
            name: app_user_profile

SRC /應用/索納塔/ UserBundle /表格/ RegistrationForm.php:

namespace Application\Sonata\UserBundle\Form;

use ...

class RegistrationFormType extends AbstractType {
    public function buildForm(FormBuilderInterface $builder, array $options)    {
        $builder
            ->add('fullName')
        ;
    }

    public function getParent() {
        return "fos_user_registration";
    }


    public function getName() {
        return 'app_user_registration';
    }
}

SRC /應用/索納塔/ UserBundle /實體/ user.php的:

namespace Application\Sonata\UserBundle\Entity;

use Sonata\UserBundle\Entity\BaseUser as BaseUser;

class User extends BaseUser
{
    /**
     * @var int $id
     */
    protected $id;

    /**
     * @var string
     */
    protected $fullName;

    /**
     * @return string
     */
    public function getFullName() {
        return $this->fullName;
    }

    /**
     * @param string $fullName
     */
    public function setFullName($fullName) {
        $this->fullName = $fullName;
    }

    /**
     * Get id
     *
     * @return int $id
     */
    public function getId() { return $this->id;}
}

以其他方式(我認為不正確)嘗試覆蓋我的自定義目錄中的RegistrationController.php,更改$form = $this->container->get('app.form.registration') (我的表單的別名),但是我收到錯誤消息, Attempted to call an undefined method named "createView" of class "Application\\Sonata\\UserBundle\\Form\\RegistrationFormType 。此后,我將該類的父擴展類從ContentAware更改為Controller,可以看到表單和新字段,但是提交后收到未知錯誤,即使在Profiler中也沒有寫出關於它的名稱。

Symfony 2.8.18,FOSUserBundle 1.3.7。 感謝您的時間。

您是否在config.yml中更新了FOSUserBundle的配置?

fos_user:
     # ...
     registration:
        form:
            name: app_user_registration

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM