我有一个从三个实体收集数据的表单。我收集的数据,并希望其中一些填写在提交的表格。这一切都很好,我甚至可以将数据传递给控制器但我有一个实体,它不包含数据我只是试图将其用作段落标签,但不想持久:
members.php(实体)
/**
* @var integer
*/
private $orgId;
/**
* @var integer
*/
private $personId;
/**
* @var string
*/
private $title;
/**
* @var integer
*/
private $rank;
/**
* @var integer
*/
private $myMemberId;
所以我想显示人员的姓名和组织名称而不是$personId和$orgId。所以我想我也可以传递它们,并在段落标签中显示它们,但我不知道如何传递它们。以下是我的文件:
membersController.php
public function mynewAction(Request $request)
{
$data = $request->get("companynameofbundle_jquery");
$entity = new Members();
$entity->setOrgId($data['orgid']);
$entity->setPersonId($data['personId']);
//var_dump($request); shows organization name and person name
//need to pass person name and organization name to edit form just to display
$form = $this->createCreateForm($entity);
return array(
'entity' => $entity,
'form' => $form->createView(),
);
}
我确实考虑过重新查找值,但当我已经拥有值并且不需要所有其他数据或开销时,似乎更多的数据库工作。
认为for可能有帮助:
class MemberType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
//Would like person name and organization name instead of id's
->add('orgId', 'hidden')
->add('personId', 'hidden')
->add('title')
->add('rank')
;
}
/**
* @param OptionsResolverInterface $resolver
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'CompanyNameofBundleEntityOrgMember'
));
}
/**
* @return string
*/
public function getName()
{
return 'company_nameofbundle_orgmember';
}
}
您可以使用mapped => FALSE添加额外的字段。
->add('apple', 'text', array('mapped' => false))
->add('banana', 'hidden', array('mapped' => false))
在控制器中,您可以像这样从字段中检索提交的数据:
$form->handleRequest($request);
$data = $form->get('apple')->getData(); // after handleRequest() !