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

Symfony 获取从表单中选择的多个选项的选项值,symfony,html-select,Symfony,Html Select,我使用以下代码制作表单: $builder ->add('person','entity',array( 'class'=>'MyBundle:Person', 'multiple' => true, 'empty_value' => 'None', 'required'=>false, 'mapped'=>false)); 因此,我得到了以下html: <sele

我使用以下代码制作表单:

$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>
在变量$key中,获取顺序为0,1,2,。。。(数组索引)。
但是这不是我所需要的。

如果您使用
实体创建了一个表单,并且person字段是
您的实体的映射属性

$form = $this->createFormBuilder(new YourEntity());
然后,您可以简单地调用属性的getter,如

if ($form->isValid()) {
    $persons=$form->getData()->getPerson();
    echo '<pre>';print_r($persons);echo '</pre>';
}
if($form->isValid()){
$persons=$form->getData()->getPerson();
回音“”;打印($persons);回音“”;
}
如果您的表单没有通过实体映射,那么您可以从请求中获取所有

if($form->isValid()){
$requestAll=$this->getRequest()->request->all();
$persons=$requestAll['mybundle\u person']['person'];
回音“”;打印($persons);回音“”;
}

通过此行$per=$form->get('person')->getData();您检索的是人员对象列表,而不是索引数组

因此,在循环中只需执行$logger->info('person:key='.$value->getId()'value='.$value))

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>';
}