嗨,我是symfony2的新手。而且我很难搞清楚如何处理我的选择框。我需要使用数据库中的“位置”数组,并将其用作我的选择框的选项。由于这个项目即将到期,我真的很感谢你们的任何帮助。
Atm我的表单设置有以下代码:
$role = $query1->getResult(Query::HYDRATE_ARRAY);
$roles = array();
for($i = 0; $i <count($roles); $i++){
$roles[] = $role[$i]['disrole'];
}
$form = $this->createFormBuilder($position)
->add('position', 'choice', array('choices' => $roles))
->add('save', 'submit', array('label' => 'Search'))->setMethod('POST')
->getForm();
以下是我在twig模板中使用它的方法:
<div class="panel-body">
{{ form(form) }}
</div>
我只是输出我的表单,因为我不太熟悉拼接表单部分。我非常感谢你的回答!提前谢谢!
答案 0 :(得分:1)
您可以使用entity field代替选择字段,Date Picker JS API是一个选择字段,用于从Doctrine加载其选项:
$form->add(
'position',
'entity',
[
'class' => 'YourBundle:Role',
'query_builder' => function (RoleRepository $repository) {
$queryBuilder = $repository->createQueryBuilder('role');
// create your query here, or get it from your repository
return $queryBuilder;
},
'choice_label' => 'disrole'
]
);
答案 1 :(得分:0)
要使用表单中的选项,我会使用以下可能性:
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('stuff', 'choice', ['choices' => $this->getChoices()]);
}
private function getChoices()
{
$contents = $this->someRepoInjectedInForm->findChoices();
$result = [];
foreach ($contents as $content) {
$result[$content->getId()] = $content->getLabel();
}
return $result;
}
您的选择标签将是数组值,通过表单发送到后端的值将是数组中相应键值对的键。