我在Symfony2工作,我有一个表格,其中显示了来自数据库的复选框。我想保存数据库中的所选复选框(mayby作为数组或字符串,如value1,value2)。我该怎样处理这个
这是我的代码:
实体:
/**
* @var string
*/
private $relevantewaben;
/**
* @return string
*/
public function getRelevantewaben()
{
return $this->relevantewaben;
}
/**
* @param string $relevantewaben
*/
public function setRelevantewaben($relevantewaben)
{
$this->relevantewaben = $relevantewaben;
}
控制器:
public function newAction()
{
$entity = new ChangeRequest();
$form = $this->createCreateForm($entity);
return $this->render('OtlgCmdbBundle:ChangeRequest:new.html.twig', array(
'entity' => $entity,
'form' => $form->createView(),
));
}
public function updateAction(Request $request, $id)
{
$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('OtlgCmdbBundle:ChangeRequest')->find($id);
if (!$entity) {
throw $this->createNotFoundException('Unable to find ChangeRequest entity.');
}
$deleteForm = $this->createDeleteForm($id);
$editForm = $this->createEditForm($entity);
$editForm->handleRequest($request);
if ($editForm->isValid()) {
$em->flush();
return $this->redirect($this->generateUrl('changerequest_edit', array('id' => $id)));
}
return $this->render('OtlgCmdbBundle:ChangeRequest:edit.html.twig', array(
'entity' => $entity,
'edit_form' => $editForm->createView(),
'delete_form' => $deleteForm->createView(),
));
}
形式:
->add('relevantewaben', 'entity', array(
'class' => 'OtlgCmdbBundle:applicant',
'label' => 'Benötigte, relevante Waben zur Umsetzung',
'property' => 'name',
'expanded' => true,
'required' => false,
'multiple' => true,
'attr' => array('class' => 'css-checkbox')
答案 0 :(得分:0)
如果您声明实体与OtlgCmdbBundle:申请人之间的关系,您的实体是该关系的所有者方,则Doctrine会自动将您的更改记录在帐户中。例如,而不是
/**
* @var string
*/
private $relevantewaben;
你应该像......
/**
* @var \Doctrine\Common\Collections\ArrayCollection
* @ORM\OneToMany(targetEntity="applicant", mappedBy="changeRequests", cascade={"persist"})
*/
private $relevantewaben;
看看:http://docs.doctrine-project.org/en/2.0.x/reference/association-mapping.html
如果您要保存的内容不是关系,但事实上,复选框选择了自己:
在您的控制器中,当您输入$entity
时,变量if ($editForm->isValid()) {
会包含所有更改,因此您可以$entity->getRelevantewaben()
来获取所选内容。
当您有一个未映射的字段时,您可以使用$form->get('relevantewaben')->getData()
访问该数据,这是您在表单字段中拥有的值。我没有使用它来获取已经映射的值,但是这可以让你知道这是不是你的情况。