yii 프레임워크 드롭다운을 사용하여 계단식 메뉴 만들기
양식, 계단식 도시 또는 계단식 카테고리 등이 필요한 경우가 많습니다. 두 개의 드롭다운 상자가 있으며 그 중 하나는 값에 따라 다릅니다. 다른 드롭다운 상자에 있습니다. Yii에 내장된 ajax 기능을 사용하면 이러한 드롭다운 상자를 만들 수 있습니다. 이를 구현하는 방법은 아래에 설명되어 있습니다.
첫번째는 형태의 모습입니다. 국가를 표시하는 양식을 표시하고 국가에 따라 도시와 함께 표시됩니다.
프로그램 코드프로그램 코드
echo CHtml::dropDownList('country_id','', array(1=>'USA',2=>'France',3= > ;'일본'),
array(
'ajax' => array(
'type'=>'POST', //요청 유형
'url'=>' 동적 도시 ', //
'update'=>'#city_id'를 호출할 URL, //업데이트할 선택기
//'data'=>'js:javascript 문'
//생략
)))를 통해 모든 양식 값을 전달하는 데이터 키
//다른 드롭다운으로 채워지므로 비어 있습니다.
echo CHtml::dropDownList('city_id',' ' , array());
?>
첫 번째 드롭다운 상자는 국가를 나타내는 여러 값/이름 쌍으로 구성됩니다. . 변경되면 현재 컨트롤러의 'dynamiccities' 작업에 의해 ajax 요청이 완료됩니다. 요청 결과('dynamiccities' 작업의 출력)는 두 번째 ID가 #city_id인 드롭다운 상자로 대체됩니다.
다음은 두 번째 드롭다운 상자를 채우기 위해 html을 출력하는 컨트롤러 작업입니다. 또한 첫 번째 드롭다운 상자의 값에 따라 달라집니다.
프로그램 코드 프로그램 코드
공용 함수 actionDynamiccities()
{
$data=Location::model()->findAll('parent_id=:parent_id',
array(':parent_id'=>(int) $_POST['country_id'])); ; 🎜> 에코 CHtml::tag('옵션',
array('value'=>$value),CHtml ::encode($name),true)
}
}
?>
parent_id가 첫 번째 드롭다운 상자 값인 모든 도시를 검색합니다. 그런 다음 이러한 모든 도시는 라벨로 출력되어 궁극적으로 두 번째 드롭다운 상자를 형성합니다.
$_POST['country_id']가 어디에서 왔는지 궁금하실 것입니다. 매우 간단합니다. 첫 번째 드롭다운 상자에 있는 ajax 배열의 'data' 키가 비어 있으면 드롭다운 상자가 있는 양식의 모든 요소 값이 ajax를 통해 컨트롤러에 전달됩니다. 요구. Firebug를 사용하는 경우 이 요청을 볼 수 있습니다.
이 동작은 변경될 수도 있습니다. 기본적으로 ajax 구성 배열의 'data' 키 값은 js:jQuery(this).parents("form").serialize()입니다. 시작 부분의 js: Yii에게 뒤에 오는 내용은 자바스크립트 명령문이므로 이스케이프해서는 안 된다는 것을 알려줍니다. 따라서 'data' 키를 'js:'로 시작하는 다른 문으로 변경하면 자신만의 문을 작성할 수 있습니다. '성공' 매개변수와도 작동합니다.