WHAT'S NEW?
Loading...

CakePHP勉強会「eat the Cake」第1回目のレポート

さる11月2日、弊社ライトアップでCakePHPの勉強会をやったんだ。
主催は俺で、こういったカンファレンスは初めてだったので、やや緊張はしたものの、生来いいかげんな性格なので、意外に大丈夫なんだなということがわかった次第。

というわけで勉強会のレポートをする。

使用したスライドは以下。


部分的に(マーカーなどが)文字化けしてしまっているので読みにくいかもしれないが、そこら辺は脳内エンコードが達者な日本人には特に注意しないでもご理解いただけると思うので、直さないでそのまま使用させていただく。

CakePHP用寝ぼけたバリデーションメッセージを起こす

CakePHPのバリデーションは非常に便利だ。1.1時代はかなりショボすぎる感があったけど、1.2になって、直感的にかなり分かりやすいものになった。

具体的に例を出すと、例えばメールフォームがあたっとして、内訳が
  • 件名:subject
  • 宛先:to
  • 本文:body
があったとする。
それらにバリデーションを入れる場合、例えば件名は空禁止、toはemail形式、本文は最低5文字(実際には5バイト)入力するのを強制する場合は、以下のような内容でモデルを設定することになる。
class Mail extends AppModel {
  public $name = 'Mail';
  public $validate = array(
    // 件名のバリデーション
    'subject' => array(
      // 空入力
      array(
        'rule' => array('notEmpty'),
        'message' => '件名を入力してください',
        'last' => true,
        'required' => true,
      ),
    ),
    // 宛先のバリデーション
    'to' => array(
      // email形式
      array(
        'rule' => array('email'),
        'message' => '正しいメールアドレスを入力してください',
        'last' => true,
        'required' => true,
      ),
    ),
    // 本文のバリデーション
    'body' => array(
      // 入力文字数
      array(
        'rule' => array('minLength', 5),
        'message' => '最低5バイトは入力してください',
        'last' => true,
        'required' => true,
      ),
    ),
  );
記事を書いた後CakePHP武将のecworks_masap氏に言われて気がついたんだけど、1点注意!「5バイト」なんて文字は運用では使わない。ユーザに対して「バイト」なんて単位を書くのはおかしいからだ。しかしここではあくまで例として(minLengthを使ったため)コードとの整合性を重視し、あえて「5バイト」と書いてみた。
各フィールド名の中には複数の条件を入れることができる。そしてそれらの条件1個1個に名前を付けることもできるが、今回は1つのフィールドに1個しか条件を入れてないので、特に名前は付けていない。

だから、'subject' => array()の中にいきなりarray()で条件をかいている。

各条件のコメント分にも書いてあるような内容を名前にしておくとあとで便利になる場合がある。もしくは厳密に名前を独自に付けることによるコントローラ側でのバリデーション判別などする場合も便利になる。具体的には以下のように、いきなり
array()ではなく、名前を指定してarray()を代入する。
'subject' => array( 'empty_case' => array( 'rule' => ・・・・・・ 'required'=> true));

CakePHPで多言語対応をする 【2/3】

言語切替ボタンを付けてみようじゃないか。

最終的にはフリーな国旗アイコンなどをゲットして、好きなレイアウトにすれば良い話なので、とりあえず全部テキストでやっていく予定。

完全にどのページからでもいつでも言語を切り替えられるのかと言われれば、「正解です」といえる様な処理なんだけど、ページネータなどのnamedパラメータが絡むテストはしていないので予めご了承していただきたい。
何事もそうだけど、「この処理は完全に全ページで正しく動くのか?」とか「1箇所でも挙動が怪しい場合は実装するな!」とか、そんな予測コストなんかはっきりいって犬が喰えば良い

なんかあった時のことを考えつつも、「こうなる可能性もあるが、ここはひとまずこう実装しておく」という、対応コストで作っておかないと、あなたは何時まで経っても自宅に帰れなくなる

そして「そんな事いってもそういう仕組で仕事が進んでいるんだからしょうがないじゃないか」と言う人がいるかも知れないが、それはそういう星の下に生まれたことを己が悔やむしかない。そしてもっと良い会社に転職できることを(俺は本当に)切に願う。

大企業のクソフローなんか無視してなンぼ。
というわけでひとまず、新規でCakePHPを構築してみることにする。
  1. CakePHPのダウンロードと設置後、最低限の設定
  2. Dashboardsコントローラ
  3. POファイル作成
  4. 言語を変更
  5. 言語切替処理
  6. リファラを使う
だいたいこういった内容と流れになる予定だ。

当然だがXAMPPなどのLinux詐欺な環境での動作確認は一切してないので、こちらもあわせてご了承いただきたい。あくまで純粋なLAMP環境を前提としている。

もしLinux詐欺をやめて、正しいLinuxを使いたくなった場合、VMwareを使うと良い。
詳しくはこちらを参照されたし。

さて早速取り掛かろう。

■CakePHPのダウンロードと設置後、最低限の設定

今回は会えて1.2を使う。というのも、1.3は1.2と比べると変更点が多く、まだ俺自身調査しきれていないからだ。

世の中には便利な本もある。『Pocket詳解 CakePHP辞典』だ。
俺はまだこの本は手に入れて無い。しかしこの本は正直欲しい。そのうち買う。

マロはどうしても1.3じゃなきゃイヤじゃ!的なわがままちゃんは、こういった優れた書籍をゲットし、己で修行していただければと思う。

さて、CakePHPの1.2.8をダウンロードしたとして、Apacheの設定も終え、早速初期設定といこうじゃないか。

まずは余計なファイルの削除と、最低限の設定。