Php Symfony FOSUserBundle无法覆盖表单,无效
有了这个,我试图覆盖RegisterFormType.php,但看不到结果,但是Symfony Profiler在表单中显示fos_user_注册被app_user_注册覆盖 首先,我在AppKernel.php中:Php Symfony FOSUserBundle无法覆盖表单,无效,php,symfony,overriding,fosuserbundle,Php,Symfony,Overriding,Fosuserbundle,有了这个,我试图覆盖RegisterFormType.php,但看不到结果,但是Symfony Profiler在表单中显示fos_user_注册被app_user_注册覆盖 首先,我在AppKernel.php中: new FOS\UserBundle\FOSUserBundle(), new Sonata\UserBundle\SonataUserBundle('FOSUserBundle'), new Application\Sonata\UserBundle\ApplicationSon
new FOS\UserBundle\FOSUserBundle(),
new Sonata\UserBundle\SonataUserBundle('FOSUserBundle'),
new Application\Sonata\UserBundle\ApplicationSonataUserBundle(),
服务.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/Application/Sonata/UserBundle/Form/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/Application/Sonata/UserBundle/Entity/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')
(我表单的别名),但我收到错误试图调用类的未定义的名为“createView”的方法“应用程序\Sonata\UserBundle\Form\RegistrationFormType
。在此之后,我将该类的父扩展类从ContentAware更改为Controller,并可以查看表单和新字段,但在提交receive unknown error后,即使在Profiler中也没有写入它的名称
Symfony 2.8.18,FOSUserBundle 1.3.7。感谢您抽出时间。您是否在config.yml中更新了FOSUserBundle的配置
fos_user:
# ...
registration:
form:
name: app_user_registration
已解决,将config.yml表单名称更改为type(尽管文档中的名称是书面名称)。通过debug:Containeries找到了它,并在上面的帖子中添加了此文件片段。抱歉,忘了立即提及此文件。