我使用Symfony 2.8,我有3个选择列表。第一个和第二个的选项从控制器中的存储库调用,如下所示:
位指示
$em=$this->getDoctrine()->getManager();
$categories = $em->getRepository('CentralBundle:Categorie')->findAll();
$sousCategories = $em->getRepository('CentralBundle:SousCategorie')->findAll();
return $this->render('product.html.twig',array('categories'=>$categories,
'sousCategories' => $sousCategories));
TWIG
<ul class="nav nav-pills nav-stacked category-menu">
<select id="select-cat" class="form-control" name="carlist">
{% for cat in categories %}
<option value="{{cat.id}}">{{cat.nom}}<option>
{% endfor %}
</select>
</ul>
<ul class="nav nav-pills nav-stacked category-menu">
<select id="select-sc" class="form-control" name="carlist">
{% for sc in sousCategories %}
<option value="{{sc.id}}">{{sc.nom}}<option>
{% endfor %}
</select>
</ul>
对于第3个选择列表,它应该在第1和第2个选择列表的函数中调用:它应该显示产品wwith&#34; categorie&#34;和&#34; sousCatogries&#34;谁在第一步中被选中。所以我认为这应该是用javascript做的,但问题是如何在javascript中使用getRepository来获取相应的产品列表,或者是否有其他解决方案来做到这一点
感谢所有
答案 0 :(得分:1)
你可以用两种方式做到这一点
<强> AJAX 强>
首先在ajax中,只需监听select1并选择2更改然后调用一个新操作,该操作将使用select1和select2值查询数据库,然后以JSON格式返回结果
$('.select1').change(function() {
populateSelect3();
});
$('.select2').change(function() {
populateSelect3();
});
function populateSelect3() {
$.ajax({
url : 'myurl',
type: 'post',
data : {'select1': $('.select1').val(), 'select2': $('.select2').val() },
success: function(data) {
// populate your select3
}
...
);
}
SYMFONIC方式
Symfony表单组件提供了一种通过事件动态更新表单的方法,请参阅此处Symfony Form Events
您必须创建自定义表单...