如何在控制器中获取select的值?

时间:2015-02-24 14:51:31

标签: php forms symfony entity

我使用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。但是有更好的方法吗?

0 个答案:

没有答案