我使用表单(filterForm)来过滤树枝视图上的实体。
'filterForm'只有一个'entity'类型的字段。在视图中,它显示了一个HTML-SELECT-OPTIONs标记。
当用户更改选择时,会调用相同的控制器来执行必要的操作来过滤实体列表。
一切正常但我需要显示带有过滤列表的值的SELECT字段。这是问题,我不知道该怎么做。
index.html.twig中的一些字段代码:
{{ form_widget(personalFilterForm.personaFiltrarMail,
{ 'empty_value': 'Todos',
'attr': {'selected': personaFiltrarMail,
'onChange': 'javascript:document.filtrado.submit()' }
}
)
}}
该代码正在生成此HTML代码:
<select name="test_onebundle_type[personaFiltrarMail]" id="test_onebundle_type_personaFiltrarMail"
onchange="javascript:document.filtrado.submit()"
required="required" selected="two@mail.com">
<option value="">Todos</option>
<option value=one@mail.com">Name One</option>
<option value=two@mail.com">Name Two</option>
<option value=three@mail.com">Name three</option>
这里的真正问题(我认为)是知道如何访问OPTIONS子元素以在具体的OPTION项目上设置de SELECTED属性。
感谢。
===控制器===
这里是'控制器'......
所有四个编号的'回声'给我邮件:'two@mail.com'但是SELECT html标签总是位于第一个OPTION标签上。
class HorasController extends Controller
{
/**
* Lists all Horas entities.
*
* @Route("/", name="horas")
* @Template()
*/
public function indexAction()
{
$em = $this->getDoctrine()->getEntityManager();
$personas = $em->getRepository('PtGhorgaBundle:Personal')->findAll();
$personalFilterForm = $this->createForm(new PersonalFilterType(), $personas);
$request = $this->getRequest();
$formVars = $request->request->get('pt_ghorgabundle_type');
$personaFiltrarMail = $formVars['personaFiltrarMail'];
//echo "1.- [".$personaFiltrarMail."]<br />";
if (!isset($personaFiltrarMail) || $personaFiltrarMail=="") {
$entities = $em->getRepository('PtGhorgaBundle:Horas')->findAll();
} else {
$criterio = array('persona' => $personaFiltrarMail,);
$entities = $em->getRepository('PtGhorgaBundle:Horas')->findBy($criterio);
$criterio = array('mail' => $personaFiltrarMail,);
$personaFiltrarMail = $em->getRepository('PtGhorgaBundle:Personal')->find($criterio)->getMail();
echo "2.- [".$personaFiltrarMail."]<br />";
$personalFilterForm->personaFiltrarMail = $personaFiltrarMail;
echo "3.- [".$personaFiltrarMail."]<br />";
echo "4.- [".$personalFilterForm->personaFiltrarMail."]<br />";
}
return array('entities' => $entities,
'personas' => $personas,
'personalFilterForm' => $personalFilterForm->createView(),
'personaFiltrarMail' => $personaFiltrarMail,
);
}
答案 0 :(得分:2)
在您的数据中,您可以将属性personaFiltrarMail
设置为相应值。
例如在您的控制器中:
$object = new Object();
$object->personaFiltrarMail = 'two@mail.com';
$form = $this->createFormBuilder($object);
然后渲染你的模板。
答案 1 :(得分:2)
我找到了它:
就在下面 回声“4 ......”行
$data = array('personaFiltrarMail'=> $personaFiltrarMail);
$personalFilterForm->setData($data);
问候。