こんばんは、ボーノです。
今まであんまりフレームワークを使ったことなかったんだけど、今後も高速開発とか身に付けたいので本格的に使ってみることに。
これを見れば次からは同じことで調べなくなるように、備忘録且つまとめとして取っておく。
- CSS:Bootstrap使用
- フレームワーク:cakePHP使用
- データベース:MySQL使用
- 開発:vim使用
- サーバー:localhostからのAWS
- API:Google Maps API使用
- データ受取:JSON
Bootstrapは指定フォルダに入れる
下記の、手動でimg, js, cssフォルダにファイルを入れる方法をとった。
Pluginフォルダに入れるだけなので簡単。
CakePHPのデザインをTwitter Bootstrapに変更する作業のメモ | asklife
Controllerでの備忘録
class内で使用するデータベースを用意する。
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形式でデータをやり取りする場合に必要みたい。
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))という書き方をする。
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’)等でよい。
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を使う。
return new CakeResponse(array('body' => json_encode(array(
'content'=> $dataOfQuestion[$dataNumber]['Question']['content'],
'level'=> $dataOfQuestion[$dataNumber]['Question']['level'],
'qid'=> $dataOfQuestion[$dataNumber]['Question']['qid']
))));
データベースからある条件のデータを取得する時
$selectedQuestion = $this->Question->find('all', array(
'conditions'=> array('Question.qid' => $qid)));
その他
ビューとかデータベースとか全体的なところはまた次回で。