我的表单中有片段复选框,当我提交时,这些值不会出现在帖子的返回中。该段未映射,因为它是来自数据库的外部值。
/**
* Users
*
* @ORM\Table(name="users", indexes={@ORM\Index(name="fk_users_users_groups1_idx", columns={"users_groups_id"})})
* @ORM\Entity
*/
class Users
{
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=45, nullable=true)
*/
private $name;
/**
* @var string
*
* @ORM\Column(name="email", type="string", length=45, nullable=true)
*/
private $email;
/**
* @var string
*
* @ORM\Column(name="password", type="string", length=32, nullable=true)
*/
private $password;
/**
* @var boolean
*
* @ORM\Column(name="active", type="boolean", nullable=true)
*/
private $active;
/**
* @var \DateTime
*
* @ORM\Column(name="created_at", type="datetime", nullable=true)
*/
private $createdAt;
/**
* @var \DateTime
*
* @ORM\Column(name="updated_at", type="datetime", nullable=true)
*/
private $updatedAt;
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var UsersGroups
*
* @ORM\ManyToOne(targetEntity="UsersGroups", cascade={"all"}, fetch="EAGER")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="users_groups_id", referencedColumnName="id")
* })
*/
private $usersGroups;
public function __construct()
{
$this->usersGroups = new ArrayCollection();
}
class UsersType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', 'text', array(
'label' => 'Nome',
'attr' => array(
'class' => 'form-control'
)
))
->add('email', 'text', array(
'label' => 'E-mail',
'attr' => array(
'class' => 'form-control'
)
))
->add('password', 'password', array(
'label' => 'Senha',
'attr' => array(
'class' => 'form-control'
)
))
->add('usersGroups', 'entity', array(
'class' => 'Ad\SisBundle\Entity\UsersGroups',
'label' => 'Grupo do usuário',
'attr' => array(
'class' => 'form-control'
)
))
->add('active', 'checkbox', array(
'label' => 'Ativo',
'attr' => array(
'class' => 'form-control'
)
))
->add('segments', 'entity', array(
'class' => 'Ad\SisBundle\Entity\Segments',
'query_builder' => function( EntityRepository $segments ) {
return $segments->createQueryBuilder("s");
},
'multiple' => true,
'mapped' => false,
'expanded' => true,
))
;
}
这是帖子的结果
Users {#2011 ▼
-name: "xxx"
-email: "xxx@hotmail.com"
-password: "312321"
-active: true
-createdAt: null
-updatedAt: null
-id: 1
-usersGroups: UsersGroups {#2013 ▶}
}
我试过这个:
$segments = $editForm->get('segments')->getData();
我相信如果细分信息是用户的对象,那么处理信息会更容易。
这是正确的方法吗?如何获取分段数据?
答案 0 :(得分:0)
如果未映射段,则不会将其传递给实体。 你可以从preSubmit事件订阅者的请求中获取它(看看 http://symfony.com/doc/current/components/form/form_events.html#event-subscribers) 或者,将映射更改为true,并将其传递给实体,但如果不希望持久化,则保留实体的字段而不使用ORM注释。