yuu_nkjm blog
2014-11-21(Fri) [長年日記]
[CakePHP][PHP] CakePHPではまったこと,ちょっと分かったこと
まずはメモ
idという属性名以外の属性を主キーにする
以下のような指定が必要.
class User extends AppModel { public $primaryKey = 'user_id';
ctpファイルって沢山つくらなあかんの?
public function resumeRecentState($session_id) {$this->render('/Play/monitor');}
他のレンダラを指定してやればOK.
validation
saveから切り出して,CakePHP 2.x | コントローラ内でバリデーション処理を呼び出す方法.
Composerのインストール
zypper in php5-openssl php5-phar php5-mcrypt curl -sS https://getcomposer.org/installer | php # composer.jsonがあるディレクトリで以下を実行すると,依存ライブラリがダウンロードされる. php composer.phar install
debug関数
$this->log(print_r($obj, true));としてログを見ていた.グローバル関数としてdebug($obj)を呼び出すと,debugログが画面上に表示された.Config/??.phpのdebug logの指定の影響を受けるらしい.グローバル関数としてpr($obj)というのもあるようだ.Cakeで使うならdebugの方が良さそうだった.
DebugKit
便利そう.ただ,画面毎のデバッグになるので,リダイレクトを使うとログが見られなさそう.
save
saveの前に暗黙的にバリデーションが呼ばれる.改修前のプログラムがリダイレクトを多用しているせいで,バリデーションエラーなどが追いかけづらかった.
バリデーション
バリデーションにおいて,rule’ キーは必須です.
'mail' => array( array( 'rule' => 'email', ’required’ => false, ’allowEmpty’ => false, 'message' => array("validate_format", "label_mailaddress") ), array( 'rule' => array('maxLength', '100'), 'message' => array("validate_length", "label_mailaddress", "100") ) )
「rule」キーはバリデーションメソッドを定義します。単一の値と配列、いずれも使用できます。「rule」の指定は、モデル中に作成したメソッド名か、コアのバリデーションクラスのメソッド名、もしくは正規表現である必要があります。