현재 종합적인 답변을 찾지 못했습니다 .. 다른 선택의 선택에 따라 선택 옵션을 변경하는 방법을 배우고 싶습니다. 예. 카테고리 일대 다 하위 카테고리Symfony2 선택 아약스 선택
카테고리 및 하위 카테고리 선택 옵션에서 콘텐츠를 선택하십시오. 내게 손을 줄 수 있습니까?
현재 종합적인 답변을 찾지 못했습니다 .. 다른 선택의 선택에 따라 선택 옵션을 변경하는 방법을 배우고 싶습니다. 예. 카테고리 일대 다 하위 카테고리Symfony2 선택 아약스 선택
카테고리 및 하위 카테고리 선택 옵션에서 콘텐츠를 선택하십시오. 내게 손을 줄 수 있습니까?
결국 나는 그의 방법 자바 스크립트 :
$('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에게 감사드립니다.
먼저 당신이
$('# 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");
}
});
컨트롤러에서 JQuery와 예를 사용하여 작업에 컨트롤을 전달하는 라우팅 URL을 사용할 필요가
/**
* @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
그럴 수 있다고 생각합니다 ... –
매개 변수를 사용하는 인수는 브라우저에서 ajax URL을 테스트하고 json 출력을 다시 전송하는 것이 가능해진다는 것입니다. 우수 솔루션, 감사합니다. –