2013年3月19日火曜日

CakePHPとAngularJSでWebアプリを作る。その1

m(__)m申し訳ないです。この記事は間違ってました。CakePHPとAngularJSでWebアプリを作る。その2に修正した内容を書いたのでそちらを読んで下さい。

CakePHPでJSONを吐き出すページを作る

前提

ひと通り基本的なCakephpのサイトが出来てる前提で進めます。
データベースにUsersテーブルがあって、Userモデル、Usersコントローラは作ってあるとします。

表示するURLを決める

CakePHPのお作法的にどういったURLが正しいか分かりませんが、以下の様にきめました。

http://sample.com/api/users/get/list?id=123
「api」部分はプレフィックスです。core.phpに以下の部分のコメントアウトをとって「api」を追加しました。
Configure::write('Routing.prefixes', array('admin','api'));
これで「UsersController」の「api_get」アクションに内容を書いていきます。

JSONで吐き出すようにコントローラを作成

UsersController.phpに以下を記述

 public function api_get($type = null){
  // 引数チェック。空か、list、all以外だったら404エラー
  if (empty($type) || !in_array($type,array('list','all'))){
   throw new NotFoundException('このページはありません。');
  }
  // タイプで処理を切り分け。そのままsetする。
  if ($type == 'list'){
   $this->set('data',$this->User->find('list'));
  }
  if ($type == 'all'){
   $this->set('data',$this->User->find('all'));
  }
  // URLのクエリをとる
  $id = $this->request->query['id']
  // 試しに適当にsetする。
  $this->set('test','hogehoge');
  // JSON形式で表示するように設定。
  $this->viewClass = 'Json';
  // シリアライズを実行する。
  $this->set('_serialize', array('data','test'));
 }
で、ブラウザでアクセスするとJSON形式のデータが表示される。
おもむろに終わり

環境とか
項目内容
PHPフレームワークCakephp 2.2.5
CSSフレームワークTwitter bootstrap 2.2.2
IDEEclipse 3.6
開発環境?MAMP
PCiMac
OSMac OS Lion

0 件のコメント:

コメントを投稿