CakePHP2

CakePHP2

CakePHP2のSecurityComponentのCSRF対策でブラックホールに頻繁に吸い込まれる

■なぜだかCSRF対策が暴発してブラックホールに頻繁に吸い込まれる こちらのCopyContentDetectorで、頻繁にブラックホールに吸い込まれる現象が発生していました。フォームを表示して、普通にボタンを押すだけでCSRFで例外発生し...
CakePHP2

CakePHP3のメール送信でPermission Denied

■環境によって動かない時がある CakePHP3でメール送信をするとき、PermissionDeniedとでて送信できない現象が発生していました。全くコードは同じだったので、環境の問題です。以下のような例外が発生していました。 ⟩ Cake...
CakePHP2

CakePHP + AjaxでのPOSTで受け取った情報が空になる原因

Ajaxでフォームから情報を取得して、CakePHPで作成したAPIのエントリポイントにPOSTをした時、どうしてもCakePHP側の$this->request->dataが空になるときの対応です。 以下の様なAjaxのコードがあったとし...
CakePHP2

CakePHPのupdateAllでDATE型、DATETIME型が更新されない

upateAllメソッドを使って、条件に当てはまるレコードを一気にアップデートしたい場合があります。updateAllメソッドを使うと便利なのですが、日付の更新をしようとすると【0000-00-00】みたいになってしまって、正しく更新できま...
CakePHP2

CakePHPでコントローラーごとにエラーページを変更する

CakePHPでAPIを実装している時に、以下のようなことを実装したいと思っていました。 ■通常画面のエラーページは(404ページや500ページ)ヘッダやフッタなどが表示されているエラーページを表示したい ■APIでの接続はエラーページはJ...
CakePHP2

CakePHPのPagenateには表示件数に100件の上限がある

最近知ったのですが、CakePHPのPaginateには一回の表示件数に上限があるみたいですね。デフォルトでは100件までのようです。ですので、limitで300とか指定しても、100件で表示されてしまいます。以下のようにmaxLimitを...
CakePHP2

CakePHPでsave実行時にmodifiedを更新しない方法

CakePHPでsaveメソッドでデータを更新するとmodifiedが自動で更新されます。要件によっては更新してほしくない場合があります。以下のように記述をすることで、modifiedが更新されないようになります。 $update = [ ...
CakePHP2

CakePHPでjsonを戻すAPIを実装するサンプル

CakePHPでjsonを戻すAPIを作るサンプルを書いてみました。結構簡単なので、参考にしてみてください。 ■気をつけるところ 気をつけるのは、【autoRender】と【autoLayout】をfalseに設定することと、respons...
CakePHP2

CakePHPで構築したWebサービスのメンテナンスモードを簡単に実装する【Maintenance plugin】

このCopyContentDetectorはCakePHPで実装しています。サービスを運用していくなかで、どうしてもメンテナンスが必要な時があります。そのメンテナンスモードを簡単に実装できるプラグインを紹介します。 ■Maintenance...
CakePHP2

CakePHPからgmail経由でメールを送信する

CakePHPからメールを送信するとき、postfix等のMTAを利用してもいいのですが、いろいろと設定が面倒です。gmail経由でメールを送信することで、設定の手間も省けると思います。 ここでは、CakePHPからgmail経由でメールを...
CakePHP2

[CakePHP]saveを連続で実行したとき、データがUPDATEされるのを防ぐ

CakePHPのDB上のデータを新規追加したりするときはsaveメソッドを使うことが多いと思います。便利です。しかし、挙動を理解しておかないと意図しない動きをすることがあります。 対象はCakePHP2系となっています。 ■データ新規追加時...
CakePHP2

Capistrano3でCakephpで作ったシステムをデプロイするまでの手順

このコピペチェックツールですが、サーバが現在7台位になっています。全部Conohaで作っています。mod_proxy_balancerを使って、APIアクセスをそこそこ捌けるようにして処理速度を稼いでいます。 ■サーバが多いと、デプロイがと...
CakePHP2

CakePHPのquery関数でプレースホルダを使う

CakePHPのORマッパーではselect for updateなど利用することはできません。 そのため、直接クエリを書いて実行する必要があります。 その時、引数で渡した値などを直接クエリ内に入れるとSQLインジェクション等のセキュリティ...
CakePHP2

compact関数のひと工夫でCakePHPのコントローラーをすっきりさせる

CakePHPのコントローラー上でよく利用する【set関数】。この関数をもっと見やすく、スマートに書く方法を紹介します。かなり見やすくなるおすすめの記述方法です。 ■set関数の普通の書き方 CakePHPでViewに値を渡すとき、以下のよ...
CakePHP2

CakePHPで独自のログファイルにログを出力する方法

CakePHPでlog関数を利用すると、デフォルト設定でdebug.logまたはerror.logにログが出力されます。この状態のままだと、バッチファイルが複数ある時など、どのバッチから呼ばれた結果のログなのか、わからなくなってしまいます。...
CakePHP2

CakePHPでデータベースアクセスしないモデルを作る方法

データベースへアクセスする必要のないモデルを作る方法です。memcacheやredisなどにアクセスするためのモデルを作るときや、ロジックのみ書いてあるモデルを作る時などに利用できると思います。 以下のように記述します。 class hog...
CakePHP2

CakePHPで現在実行中のController名,action名を取得する

■コントローラー名の取得 以下のように記述すると、コントローラ名が取得できます。 echo $this->name; routes.phpで別名になっていても、実際のコントローラー名が取得されます。 ■アクション名の取得 以下のように記述す...
CakePHP2

CakePHPでデバッグしやすいログ出力方法

CakePHPでの便利なログの出力の仕方をメモしておきます。 この方法を使うと便利にデバッグできるかと思います。 ■ログの出力の記述方法 CakePHPのログ出力はlog関数を使います。以下のように記述をすると、 $this->log(__...
CakePHP2

CakePHPでデバッグレベルが指定の時だけ分岐する

デバッグレベルが指定の場合にのみ条件分岐をして処理する記述です。 例えば、debug = 0以外の時はGoogleAnalyticsのタグを出力しない。などの処理を書くことができます。開発中には必須ですね if( Configure::re...
CakePHP2

CakePHPでredisをキャッシュサーバとして使う

■CakePHPのキャッシュ機構を使ってみる CakePHPにはデフォルトでキャッシュ機構がついています。どこか別のところに、一時的に情報を保存する場合などに非常に便利です。ランキングデータ等、DBに保存するまでもない様な情報を保持しておく...