Symfony2 FOSUserBundle覆盖配置文件表单:字段表单是否为空?
我用附加字段覆盖了FOSUserBundle中的注册表:它运行良好 当我应用相同的逻辑覆盖配置文件表单时:表单与我的additionals字段显示良好,但全部为空(字段不包含值)连接的用户的名称) 注意:当我使用包中的默认表单时,配置文件表单包含这些值已连接用户的 与覆盖注册表以检索值相比,是否有特定操作连接的用户的名称 以下是代码: src/Vn/UserBundle/Resources/config/services.yml symfony/app/config/config.yml src/Vn/UserBundle/Form/Type/ProfileFormType.php src/Vn/UserBundle/Form/Type/MyProfileFormType.phpSymfony2 FOSUserBundle覆盖配置文件表单:字段表单是否为空?,symfony,overriding,profile,fosuserbundle,Symfony,Overriding,Profile,Fosuserbundle,我用附加字段覆盖了FOSUserBundle中的注册表:它运行良好 当我应用相同的逻辑覆盖配置文件表单时:表单与我的additionals字段显示良好,但全部为空(字段不包含值)连接的用户的名称) 注意:当我使用包中的默认表单时,配置文件表单包含这些值已连接用户的 与覆盖注册表以检索值相比,是否有特定操作连接的用户的名称 以下是代码: src/Vn/UserBundle/Resources/config/services.yml symfony/app/config/config.y
我在文件profilformandler.php中发现了错误:在函数process()中,我调用了parent::onsuces()而不是parent::process()。。。 当然,由于我的错误,结果是一个“无声”错误(无声是因为没有出现致命错误) 谢谢你花时间来帮助我,非常抱歉
<?php
// src/Vn/UserBundle/Form/Handler/RegistrationFormHandler.php
namespace Vn\UserBundle\Form\Handler;
use FOS\UserBundle\Form\Handler\ProfileFormHandler as BaseHandler;
use FOS\UserBundle\Model\UserInterface;
class ProfileFormHandler extends BaseHandler
{
public function process(UserInterface $user)
{
//parent::onSuccess($user);
parent::process($user); // sound better of course : )
}
protected function onSuccess(UserInterface $user)
{
$this->userManager->updateUser($user);
}
}
请用英语发布您的问题。您可以从使用表单的控制器发布代码吗?这一切看起来都不错,但都没有设置任何数据。它只是描述表单结构。在控制器中,必须调用$form->setData($user)代码>
fos_user:
...
profile:
form:
type: vn_user_profile
handler: vn_user.form.handler.profile
namespace Vn\UserBundle\Form\Type;
use Symfony\Component\Form\FormBuilder;
use FOS\UserBundle\Form\Type\ProfileFormType as BaseType;
class ProfileFormType extends BaseType
{
public function buildUserForm(FormBuilder $builder, array $options)
{
parent::buildUserForm($builder, $options);
// custom field
$builder->add('profile',new MyProfileFormType(),array(
'label' => 'PROFILE'
));
}
public function getName()
{
return 'vn_user_profile';
}
}
namespace Vn\UserBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;
class MyProfileFormType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('birthday','birthday', array(
'input' => 'array',
'widget' => 'choice',
'label' => 'Birthday',
))
->add('firstname','text', array(
'trim' => true,
'label' => 'Firstname',
))
->add('lastname','text', array(
'trim' => true,
'label' => 'Lastname',
))
->add('gender','choice', array(
'choices' => array('1' => 'Male', '2' => 'Female'),
'expanded' => true,
'required' => true,
'label' => 'Vous êtes',
));
}
public function getName()
{
return 'vn_user_myprofile';
}
public function getDefaultOptions(array $options)
{
return array(
'data_class' => 'Vn\UserBundle\Document\Profile',
);
}
}
<?php
// src/Vn/UserBundle/Form/Handler/RegistrationFormHandler.php
namespace Vn\UserBundle\Form\Handler;
use FOS\UserBundle\Form\Handler\ProfileFormHandler as BaseHandler;
use FOS\UserBundle\Model\UserInterface;
class ProfileFormHandler extends BaseHandler
{
public function process(UserInterface $user)
{
//parent::onSuccess($user);
parent::process($user); // sound better of course : )
}
protected function onSuccess(UserInterface $user)
{
$this->userManager->updateUser($user);
}
}