Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 表单类型映射为false symfony2_Php_Forms_Symfony - Fatal编程技术网

Php 表单类型映射为false symfony2

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

我在使用mapped=false的formtype时遇到问题

在controller中,我使用以下命令调用表单:

$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();}