CakePHPでフォームのバリデーションを行う場合、例えばチェックボックスで「選択肢A」が選択されている場合のみ、「アンケート」のテキストエリアを必須入力にしたい!といった事があるかと思います。
バリデーションルールを切り替えるというのも1つの手段かと思いますが、もっと簡単に、バリデーションの定義だけでそれを実現できる関数を、ビヘイビアとして書いてみたので公開します。
CONTINUE READING
CakePHPでフォームのバリデーションを行う場合、例えばチェックボックスで「選択肢A」が選択されている場合のみ、「アンケート」のテキストエリアを必須入力にしたい!といった事があるかと思います。
バリデーションルールを切り替えるというのも1つの手段かと思いますが、もっと簡単に、バリデーションの定義だけでそれを実現できる関数を、ビヘイビアとして書いてみたので公開します。
CONTINUE READING
CakePHPで開発したアプリケーションを公開する際、たとえばバグの修正やデータベースのアップデートを行う場合など、サイトの全機能をいったん止めて、バックエンドで作業したいことがあるかと思います。
エントリポイントであるAPP/webroot/index.php
を差し替えるという強硬手段もあるかと思いますが、もっと手軽に実現するためのMaintenanceコンポーネントを作成してみたので公開します。
CONTINUE READING
CakePHPではデバッグレベルを0としている場合、あらゆるエラーが非表示になり、CakePHPのエラーをはじめPHPのWarningやFatalエラーも記録されなくなります。
例えば、その状態で致命的なエラーが発生しても、画面が真っ白になったり、ErrorHandler::error404
メソッドが実行されるだけで、どこかで能動的に$this->log
などで記録していない限り、解決につながる情報が記録されません。
そんな時、下記ブログを参考にカスタムエラーハンドラや、PHPエラーを記録する条件を定義しておくだけで、手軽にログを取ることができるようになります。
この中の内容で、自分も利用させて頂いている2つめの方法が手軽でよいので、紹介させて頂きます。
/app/config/bootstrap.phpの中にphpエラーログを常に/app/tmp/log/php_error.logに出力するとか
例えば:
if ( Configure::read(‘debug’) == 0 ) {
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
ini_set(‘display_errors’, 0); ini_set(‘log_errors’, 1);
ini_set(‘error_log’, LOGS . DS . ‘php_error.log’);
}
CakePHPでdebug=0の際にset_error_handler – benny毎日ラボ
下記のコードをAPP/config/bootstrap.phpに書いておくだけです。
if (Configure::read('debug') == 0) { error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED); ini_set('display_errors', 0); ini_set('log_errors', 1); ini_set('error_log', LOGS . DS . 'php_error.log'); }
これだけで、デバッグレベルが0の場合でも、APP/tmp/logs/php_error.log
にエラー情報が記録されるようになります。