うに部屋を改修するためにCakePHPを覚え始めました。
教材はこちら
PHPも使いこなせてない状態で無理に覚えようとしてるのでかなり必死です。
とりあえず覚えたことをすぐ読み返せるようにメモしていきます。
DB
テーブル関係
決まり
・テーブル名は複数形 例)posts・小文字なのか?(未確認)
必ず作る列
・id int not null auto_increment primary key・created datetime default null
・modified datetime default null
created,modifiedに関してはなくてもいいけど作っとくとCakeが勝手に書き込んでくれるらしい。すんごい。
SQLの例
create table posts ( id int not null auto_increment primary key ,title varchar(50) ,body text ,created datetime default null ,modified datetime default null )
Model
決まり
・ファイルは[/app/Model/]に配置する・クラス名は単数形のCamel方式 例)Post
・ファイル名はクラス名.php
・AppModelを継承する
・中身は何も書かなくてもいい?(未確認) 書かなくても読み書きできてる。
ソース例
<?php class Post extends AppModel { }
View
決まり
・Controllerのメソッド1つに対して1つ作る(たぶん)・ファイルは[/app/View/[Controller]/[メソッド名].ctp
・中身は普通にHTMLとPHP混在でいいっぽい
・Controllerのメソッド内でsetされた変数を呼び出せる
・Controllerで宣言されたヘルパークラスも使えるっぽい
ソース例
Controller内で下記のようにsetされている場合、
$this->[Model]->id = $id; $this->set('hoge', $this->[Model]->read());以下の感じのViewを書いておくと表示できる
<h2><?php echo h($post['Post']['title']); ?></h2> <p><?php echo h($post['Post']['body']); ?></p>すんごい
Controller
決まり
・ファイルは[/app/Controller/]に配置する・クラス名は複数形+ControllerのCamel方式 例)PostsController
・ファイル名はクラス名.php
・AppControllerを継承する
・頭のほうにヘルパーを宣言しておくと便利
・メソッドを定義するとURLからアクセス可能になる
・PostsControllerにindexメソッドを定義した場合、
http://hostname/sitename/Posts/index
ってURLでアクセス可能になる。
要するに [Controller]/[Method] でアクセス可能になるってこと。
ヘルパー
クラスのメンバ変数として宣言しておくと便利らしい(まだよくわからん)書き方
public $helpers = array('Html', 'Form');こんな感じ
Html
まだ調べてないたぶん h()とかが入ってる。
Form
まだ調べてないメソッド内でよく使いそうなもの
set
$this->set('foo','bar');こうするとfoo変数にbarをセットできる。
Viewでfooを使えるようになる。
find('all')
$this->set('foo', $this->[Model]->find('all'));これだけでDBからデータを取得できる。
read()
$this->[Model]->id = $id; $this->set('hoge', $this->[Model]->read());こうするとIDを指定したselectみたいになる。
↓の引数を受け取る方法を組み合わせて使う。
引数を受け取る
メソッドに引数をつけることができるpublic function view($id = null)とか。
こうすると /[Controller]/view/[id] ってURLでアクセスされた際に受け取れる。