JSON과 XML 뷰
CakePHP2.1는 새로운 두 뷰 클래스가 있습니다. XmlView
와 JsonView
를 사용하면 XML 및 JSON 응답을 쉽게 만들 수 있으며, RequestHandlerComponent
과 결합 할 수 있습니다.
RequestHandlerComponent
를 사용하여 xml
과 json
확장 지원을 사용하여 자동으로 새로운 뷰 클래스에 영향을 미칠 수 있습니다. XmlView
와 JsonView
는 페이지의 나머지 부분에서 데이터 뷰를 참조해주세요.
데이터 뷰를 생성하려면 두 가지 방법이 있습니다. 첫째는 _serialize
키를 사용하는 것입니다. 두 번째는 보통의 뷰 파일을 만드는 방법입니다.
데이터 뷰를 활성화
데이터 뷰 클래스를 사용하기 전에 약간의 설정이 필요합니다. :
Router::parseExtensions()
를 사용하여 json과 xml 확장자를 활성화 해주세요. 이 설정에 따라 라우터가 여러 확장자를 핸들링 할 수 있게됩니다.RequestHandlerComponent
를 컨트롤러의 컴포넌트 리스트에 추가하세요. 이 설정으로 콘텐츠 유형에 따라 자동으로 뷰 클래스가 바뀌게됩니다.
Router::parseExtensions('json');
를 라우터 파일에 추가하면 .json
확장자의 요청을 받았을 때와 application/json
헤더를받은 때에는 CakePHP가 자동으로 뷰 클래스 전환하게됩니다 .
직렬화 키와 함께 데이터 뷰를 사용
_serialize
키는 데이터 뷰를 사용하고있을 때 다른 뷰 변수가 직렬화 될 것인지 아닌지를 나타내는 특별한 뷰 변수입니다. 데이터가 json/xml로 변환되기 전에 사용자 정의 포맷터가 필요하지 않은 경우 컨트롤러 액션을위한 뷰 파일의 정의를 생략 할 수 있습니다.
만약 응답을 생성하기 전에 뷰 변수의 조작과 성형이 필요한 경우 뷰 파일을 사용해야합니다. 그 때 _serialize
값은 문자열 또는 직렬화 된 뷰 변수의 배열입니다. :
class PostsController extends AppController {
public function index () {
$this->set('posts', $this->paginate ());
$this->set('_serialize', array('posts'));
}
}
연결된 뷰 변수의 배열로 _serialize
을 정의 할 수도 있습니다. :
class PostsController extends AppController {
public function index () {
// some code that created $posts and $comments
$this->set(compact('posts', 'comments'));
$this->set('_serialize', array('posts', 'comments'));
}
}
배열로서 _serialize
를 정의하면 XmlView
을 사용하는 경우에 최상위 요소로 <response>
가 자동으로 추가되는 장점이 있습니다. 만약 _serialize
문자열을 설정하여 XmlView
를 사용하는 경우 뷰 변수가 단일의 최상위 요소로 되어 있는지 확인하십시오. 단일 최상위 요소가 없다면 Xml의 생성은 실패 할 것이다.
뷰 파일과 함께 데이터 뷰를 사용
최종 출력을 생성하기 전에 뷰의 내용에 어떤 조작이 필요한 경우에는 뷰 파일을 사용해야합니다. 예를 들어, 자동 생성 된 HTML을 포함한 필드가 posts에 있었다고하면 아마도 JSON 응답에서는 제외하고 싶을 것입니다. 이러한 상황에서 뷰 파일은 유용합니다. :
// 컨트롤러 코드
class PostsController extends AppController {
public function index () {
$this->set(compact('posts', 'comments'));
}
}
// 뷰 코드 - app/View/Posts/json/index.ctp
foreach($posts as & $post) {
unset($post['Post']['generated_html']);
}
echo json_encode(compact('posts', 'comments'));
좀더 복잡한 작업을 할 수 있으며, 또한 성형을 위해 헬퍼를 사용할 수 있습니다.
데이터 뷰 클래스는 레이아웃을 지원하지 않습니다. 뷰 파일이 연재 된 내용을 출력하는 것을 가정합니다.
class
XmlView
Xml 뷰 데이터를 생성하기위한 클래스입니다. XmlView의 사용법은 위의 설명을 참조하십시오.
class
JsonView
Json 뷰 데이터를 생성하기위한 클래스입니다. JsonView의 사용법은 위의 설명을 참조하십시오.
'PHP' 카테고리의 다른 글
PHP : ini_set() 함수 (0) | 2015.05.19 |
---|---|
CakePHP- View - Helper (0) | 2015.05.14 |
CakePHP - 뷰 - 테마 (0) | 2015.05.13 |
CakePHP - View (0) | 2015.05.12 |
[CakePHP] Controller - Components (0) | 2015.05.08 |