CakePHP로 Select2를 계층형의 셀렉트 박스로 실현하는 방법【계층형】
데이터베이스 구성
■ 테이블 구성 (places 테이블)
컬럼
금형
id
INT
parent_id
INT
이름
VARCHAR
■테이블의 내용
id
parent_id
이름
1
NULL
관동
2
1
도쿄도
3
1
사이타마현
4
1
도치기현
5
NULL
간사이
6
5
오사카부
7
5
교토부
8
5
효고현
"parent_id가 null이 부모", [parent_id가 null이 아닌 것이 아이"입니다.
컨트롤러로 places 테이블에서 원하는 형태로 취득
아래와 같은 형태로 $optinos에 배열을 정의하고 싶습니다.
PostsController.php
$optinos = [
'関東' => [
2 => '東京都',
3 => '埼玉県',
4 => '栃木県',
],
'関西' => [
6 => '大阪府',
7 => '京都府',
8 => '兵庫県',
]
];
Collection 클래스를 사용하여 데이터를 검색합니다.
PostsController.php
$parents = $this->Places->find()
->where([
['Places.parent_id is' => null]
]);
$places = $this->Places->find()
->join([
'table' => $parents,
'alias' => 'Parent',
'type' => 'LEFT',
'conditions' => 'Parent.Places__id = Places.parent_id'
])
->where([
['Places.parent_id is not' => null]
])
->select([
'Places.id',
'Places.parent_id',
'Places.name',
'Parent_name' => 'Parent.Places__name',
]);
$places = Collection($places);
$options = $places->combine('id', 'name', 'Parent_name')->toArray();
$this->set(compact('options'));
보기로 전달
컨트롤러에서 얻은
$options
를 선택 상자의 인수에 전달합니다.add.ctp
$this->Form->select('id', $options, ['id' => 'select2'])
<script>
$(document).ready(function() {
$('#select2').select2();
});
</script>
그러면 아래와 같이 됩니다.
참고
Select2 공식 사이트
CakePHP 공식 사이트
Reference
이 문제에 관하여(CakePHP로 Select2를 계층형의 셀렉트 박스로 실현하는 방법【계층형】), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yuta_sawamura/items/c202abdd4ab7e3d87ed5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)