Cakephp2.2のバリデーション。

いつも忘れるので書式をメモ。

public $validate = array(
  'title' => array(
    array(
      'rule' => 'notEmpty',
      'message' => '*[title]必須項目です。',
    ),
    array(
      'rule' => array('maxLength', '80'),
      'message' => '*[title]80文字以内で入力してください。',
    ),
  ),
  'body'=>array(
    array(
      'rule' => 'notEmpty',
      'message' => '*[body]必須項目です。',
    ),
    array(
      'rule' => array('maxLength', '20000'),
      'message' => '*[body]20000文字以内で入力してください。',
    ),
  ),
);

あとはコントローラーからモデルにset()してvalidates()。
エラーメッセージは$this->Model->validationErrorsに全部ぶち込んであるので便利。

特定のブラウザでCakephp2.2のSessionが消える問題。

現象の再現方法は以下の通り

・CSSや画像関連で実際に存在しないパス&URLを指定しているとSessionが切れる。
・favicon.icoのパス指定がおかしいとSessionが切れる。
・IE8でCakePHP使うとセッションが切れる。

以下、人によっては解決するかもしれない方法

・Layoutをデフォルトに戻す。
・CSS, JSで画像してる部分が正しいパスであるか全部確認。
・CSS, JSを切る。
・core.phpのSecurity.levelをlowにする。
・SessionCompornentとSessionHelperをAppControllerで読み込んでみる。
・Session変数の名前を変えてみる。
・webroot直下の.htaccessを以下に書き換える。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\.(cgi|css|gif|jp?g|png)$
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

ここまでやってもだめなら次の方法
core.phpに以下を貼っつける。

Configure::write('Security.cookie', 'cakephpfdebackend');
Configure::write('Session.cookieTimeout', 0);
Configure::write('Session.checkAgent', false);

これで治るよ!やったねたえt(ry

Hello world!

WordPress へようこそ俺。とりあえずインストール完了。まずは記事の移植作業からはじめてみようかね。

※ちなローカル環境