我使用Page实体(管理页面列表......)
我有一个实体字段类型:
$builder
->add('parent', 'entity', array(
'class' => 'EliophotBackBundle:Page',
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('p')
->join('p.translations', 'pt')
->where('p.id = pt.translatable')
->andWhere('pt.locale = :lang')
->setParameter('lang', 'fr')
;
},
'label' => 'Page parente ?',
'multiple' => false,
'required' => false,
'empty_value' => 'Choisissez une page parente',
'empty_data' => null,
));
我的Page实体中有一个__toString
方法,用于在选择字段中显示页面名称:
public function __toString()
{
return (string) $this->getName();
}
因此,在我的twig模板中,我有一个选择字段,显示页面列表,如下所示:
<select>
<option value="1">page 1</option>
<option value="2">page 2</option>
<option value="3">page 3</option>
...
</select>
但是当我提交表单时,我只得到选择的选择值,例如“第1页”。
但是我想在我的数据库中存储值属性(<option value="1">
)中存在的'id',而不是字符串......那么如何在控制器中获取select的值?
我试试这个,但它只返回所选页面的名称:
$myForm->get('parent')->getData(); //dump = 'page 1' for example
修改
$test = $request->request->get('page');
dump($test['parent']);exit;
此代码返回所选页面的ID。但是有更好的方法吗?