こんばんは、ボーノです。
今まであんまりフレームワークを使ったことなかったんだけど、今後も高速開発とか身に付けたいので本格的に使ってみることに。
これを見れば次からは同じことで調べなくなるように、備忘録且つまとめとして取っておく。
- CSS:Bootstrap使用
- フレームワーク:cakePHP使用
- データベース:MySQL使用
- 開発:vim使用
- サーバー:localhostからのAWS
- API:Google Maps API使用
- データ受取:JSON
Bootstrapは指定フォルダに入れる
下記の、手動でimg, js, cssフォルダにファイルを入れる方法をとった。
Pluginフォルダに入れるだけなので簡単。
CakePHPのデザインをTwitter Bootstrapに変更する作業のメモ | asklife
Controllerでの備忘録
class内で使用するデータベースを用意する。
1 2 3 4 5 6 7 | public $name = "Main"; //使用するコントローラの名前を宣言 public $uses = array('Question', 'Answer', 'User'); //使用するデータベースを指定 public $autoLayout = false; //指定しないとdefault.ctpが適用される public $autoRender = true; //trueにしないとレンダリングしてくれない public $helpers = array('Js' => array('Jquery')); //ヘルパーを指定 public $components = array('RequestHandler'); //Ajaxを使う時に必要みたい |
JSON形式でデータをやり取りする場合に必要みたい。
1 2 3 4 5 6 7 8 9 10 | public function beforeFilter(){ if($this->RequestHandler->isAjax()){ if($this->action =='getAjaxAnswer'){ Configure::write('debug', 0); $this->RequestHandler->setContent('json'); $this->RequestHandler->respondAs('application/json; charset=UTF-8'); } } } |
ビューに値を渡す方法。$this->set()を使う。
Questionはデータベースの名前。find('all')は全てのカラムから取得。
条件指定をする時は、find('all', array('conditions'=> hoge))という書き方をする。
1 2 3 4 5 6 | public function hoge() { Configure::write('debug', 0); //デバッグを無効に。有効にする時は1 $dataOfQuestion = $this->Question->find('all'); $this->set('dataOfQuestion', $dataOfQuestion); } |
データの保存する時は$this->save()を使う。
なお、時間を入れたい時はdate('Y-m-d H:i:s')等でよい。
1 2 3 4 5 6 | public function addRecord() { $this->Question->data['Question']['created_at'] = date('Y-m-d H:i:s'); $this->Question->data['Question']['place_lat'] = const; $this->Question->save($this->data); } |
JSON形式でビューにデータを渡す時は下記方法で。json_encodeを使う。
1 2 3 4 5 6 | return new CakeResponse(array('body' => json_encode(array( 'content'=> $dataOfQuestion[$dataNumber]['Question']['content'], 'level'=> $dataOfQuestion[$dataNumber]['Question']['level'], 'qid'=> $dataOfQuestion[$dataNumber]['Question']['qid'] )))); |
データベースからある条件のデータを取得する時
1 2 3 | $selectedQuestion = $this->Question->find('all', array( 'conditions'=> array('Question.qid' => $qid))); |
その他
ビューとかデータベースとか全体的なところはまた次回で。