Php 表单类型映射为false symfony2
我在使用mapped=false的formtype时遇到问题 在controller中,我使用以下命令调用表单:Php 表单类型映射为false symfony2,php,forms,symfony,Php,Forms,Symfony,我在使用mapped=false的formtype时遇到问题 在controller中,我使用以下命令调用表单: $form = $this->createForm(new JurisdictionUserNewType(), $jurisdiction_user); 这是我的司法管辖区SernewType: class JurisdictionUserNewType extends AbstractType { public function buildForm(FormBui
$form = $this->createForm(new JurisdictionUserNewType(), $jurisdiction_user);
这是我的司法管辖区SernewType:
class JurisdictionUserNewType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$transformer = new CapitalLetterToLowerCaseTransformer();
$builder
->add('name', 'text')
->add($builder->create('email', 'email')
->addModelTransformer($transformer))
->add('securityUser', new SecurityUserType(), array('mapped' => false))
->add('save', 'submit');
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Radmas\Open010Bundle\Document\JurisdictionUser'
));
}
public function getName()
{
return 'jurisdictionUserNew';
}
}
这是我的SecurityUserType:
class SecurityUserType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('first_name', null, ['label' => 'profile.edit.labels.first_name', 'icon_class' => 'fa fa-user'])
->add('last_name', null, ['label' => 'profile.edit.labels.last_name', 'icon_class' => 'fa fa-user'])
->add('nickname', null, ['label' => 'profile.edit.labels.nickname',
'attr' => [ 'help_text' => 'profile.edit.labels.nickname_help'], 'icon_class' => 'fa fa-globe']);
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Radmas\SecurityBundle\Document\SecurityUser'
));
}
public function getName()
{
return 'securityUser';
}
}
当我在表单中输入数据时,我在modalview中获得了object JustictionUser,但我没有获得object securityUser。如果在任何字段上设置
'mapped'=>false
,您的意思是该字段与您的实体无关,因此从提交的表单中检索实体时无法获得该字段
您可以从表单中以单个字段的形式获取它,如下所示:
$form->handleRequest($request);
if ($form->isValid()) {
$entity = $form->getData();
$securityUser = $form->get('securityUser')->getData();
}
为什么要使用
array('mapped'=>false)
?因为文档SecurityUser与文档辖区用户没有任何关系或引用。如果删除array('mapped'=>false),则会出现以下错误:属性“SecurityUser”或方法“getSecurityUser()”、“isSecurityUser()”、“hasSecurityUser()”、“\uu get()”中的任何一个都没有在“Radmas\Open010Bundle\Document\JudictionUser”类中存在并具有公共访问权限是的,这取决于您是否要映射。我刚刚回答了您的问题,如何从表单中获取数据。对于exmaple:$form->handleRequest($request); 如果($form->isValid()){$data=$form->getData();}