获取从表单中选择的多个选项值

时间:2014-05-04 05:11:35

标签: symfony html-select

我使用此代码制作表单:

$builder
    ->add('person','entity',array(
        'class'=>'MyBundle:Person',
        'multiple' => true,
        'empty_value' => 'None',
        'required'=>false,
        'mapped'=>false));

结果我得到了这个HTML:

<select id="mybundle_person_person" multiple="multiple" name="mybundle_person[person][]">
        <option value="1">Surname1</option>
        <option value="5">Surname2</option>
        <option value="6">Surname3</option>
        <option value="11">Surname4</option>
        <option value="19">Surname5</option>
</select>

这里,值&#34;选项值&#34; (1,5,6,11,19)对应于数据字段&#34; Id&#34;来自表格(来自实体)&#34; Person&#34;。

但是没关系。

在Controller中处理表单时,我希望获得所选项目的这些选项的svalues。 例如,选择了项目&#34; Surname2&#34;,&#34; Surname3&#34;,&#34; Surname5&#34;我想获得价值观&#34; 2&#34;,&#34; 6&#34;,&#34; 19&#34;。 我的问题是如何做到这一点?

如果我使用此代码

if ($form->isValid()) {
    $per = $form->get('person')->getData();

    $logger=$this->get('logger');

    foreach($per as $key => $value){
        $logger->info('person: key='.$key.' value='.$value);
    }
变量$ key中的

获取订单号0,1,2,...(数组索引)。 但这不是我需要的。

2 个答案:

答案 0 :(得分:1)

如果您使用entity创建了表单,而person字段是YourEntity的映射属性,如

$form = $this->createFormBuilder(new YourEntity());

然后你可以简单地调用你的财产的吸气剂,如

if ($form->isValid()) {
    $persons=$form->getData()->getPerson();
    echo '<pre>';print_r($persons);echo '</pre>';
}

如果您的表单未通过实体进行映射,那么您可以从

中获取所有请求
if ($form->isValid()) {
    $requestAll = $this->getRequest()->request->all();
    $persons = $requestAll['mybundle_person']['person'];
    echo '<pre>';print_r($persons);echo '</pre>';
}

答案 1 :(得分:0)

通过这一行$ per = $ form-&gt; get('person') - &gt; getData();检索人员对象列表而不是索引数组

所以在你的循环中只需要$ logger-&gt; info('person:key ='。 $ value-&gt; getId()。'value ='。$ value);