我還沒有發現任何全面的答案.. 我想了解如何根據另一個選擇的選擇更改選擇選項。 例如。 類別一對多子類別Symfony2 select choice ajax
我從類別和子類別中選擇一個選項來選擇內容更改。 你能幫我一下嗎?
我還沒有發現任何全面的答案.. 我想了解如何根據另一個選擇的選擇更改選擇選項。 例如。 類別一對多子類別Symfony2 select choice ajax
我從類別和子類別中選擇一個選項來選擇內容更改。 你能幫我一下嗎?
到底我決定用t他的方法: 的javascript:
$('select[name*="[category][category]"]').prop('selected', true).change(function(){
var Id = $(this).val();
var url = Routing.generate('route_to_retrieve_subcategory');
$.post(url,
{ 'idCat': Id
}, function(results){
var sub = $('select[name*="[category][category]"]').parent().find('select[name*="[subCategory][]"]');
sub.empty();
$.each(results , function(key, value) {
sub
.append($("<option></option>")
.attr("value",value.id)
.text(value.subCategory));
});
});
});
控制器:
public function getSubcategoryAction(Request $request)
{
$Id = $request->get('idCat');
$em = $this->getDoctrine()->getManager();
$entities = $em->getRepository('MyBusinessBundle:SubCategories')->findSubCategories($Id);
$output = array();
foreach ($entities as $member) {
$output[] = array(
'id' => $member->getId(),
'subCategory' => $member->getSubCategory(),
);
}
$response = new Response();
$response->headers->set('Content-Type', 'application/json');
$response->setContent(json_encode($output));
return $response;
}
路線:
route_to_retrieve_subcategory:
pattern: /route_to_retrieve_subcategory
defaults: { _controller: "MyBusinessBundle:ajax:getSubcategory" }
options:
expose: true
我不想通過課程來傳遞參數,我覺得這沒有什麼意義!
非常感謝shrujan shetty的靈感。
首先,你需要使用jQuery 例如使用路由URL傳遞控制的動作
$('# category id').change(function(){
var Id = $('#category id').val();
var url = Routing.generate('route_to_retrieve_subcategory', { 'Id': Id });
$.post(url,
{ 'Id': Id
},function(data){
$('#subcategoryId').html(data);
},"text");
}
});
在控制器
/**
* @Route("subcategory/{Id}",name="route_to_retrieve_subcategory")
* @Template()
*/
public function getSubcategoryAction($Id)
{
//code
return new Response($subcategoryList, 200);
}
注: 的路由必須在路由上市。 yml文件
route_to_retrieve_subcategory:
pattern: /route_to_retrieve_subcategory/{Id}
defaults: {_controller: YourBundle:YourController:getSubcategory}
options:
expose: true
感謝您的回覆! 但是對於我來說呢?我創建了一個由查詢生成的新選擇字段? 爲什麼把路徑上的Id參數?與方法$ .ajax的「data」參數不一樣嗎? 只是改變選擇的選項而不是取代整個選擇不是更好嗎? – Lughino 2013-02-12 12:38:43
我想你可以這樣做...... – 2013-02-13 13:22:20
使用參數的一個參數是它很容易在瀏覽器中測試ajax url並查看發送的json輸出。非常好的解決方案,謝謝。 – 2013-05-30 11:52:28