CakePHPで現在のクラス名を取得すると単数形になっている、しかしこれを複数形に変換しないとViewでコントローラーを指定できないので

CakePHPを使っていて、View側でメソッド名やコントロール名を取得して処理をしたいという場面が出てきた。取得そのものは$this->actionや$this->nameでそれぞれ取得が可能なのだが、$this->Html->url()で指定するコントローラー名は複数形で指定する必要があるらしく、しかし$this->nameで得られるのは単数形の状態。「複数形は単純に後ろにsをつけましょう」などといった中学英語の初歩では通用するはずもなく、さりとて自分で複数形データーベースを作って変換関数を用意するなんて気が遠い……。いや、そもそもCakePHPではそれを処理しているんだから絶対に関連した関数なりメソッドが提供されているに違いない、と思ってマニュアルを紐解くと、やはりあった。 “CakePHPで現在のクラス名を取得すると単数形になっている、しかしこれを複数形に変換しないとViewでコントローラーを指定できないので” の続きを読む

CakePHP2.4からAuthComponentのパスワードのハッシュ化の扱いが仕様変更され、デフォルトではSimplePasswordHasherというクラスを用いてハッシュ化されるらしいので、従来のハッシュ値と変わってしまってログインできないというハマリどころに数日悩まされた、あとuserModelに騙されて

CakePHP2系はずっと使っていて、Authコンポーネント(AuthComponent)も使って認証画面を実装することも、ままあった。今回またCakePHPを使って認証画面の実装を行おうとしたら、なぜか認証がいくらやってもうまく通らない。パスワードは事前にハッシュ化してテーブルにINSERTしているし、カラム名の指定も間違ってない。不安になりながら過去成功していたソースと見比べてみても、まったく同じように実装している。なのに認証が通らない。アカウントがあることは認識できているのでデータベースの設定などの問題でもテーブル構成の問題でもない。となると一体何なんだろうか……悩みぬいて数日(いや1週間ぐらいか)、ハマッたのである。あとuserModelオプションにはすっかり騙された。 “CakePHP2.4からAuthComponentのパスワードのハッシュ化の扱いが仕様変更され、デフォルトではSimplePasswordHasherというクラスを用いてハッシュ化されるらしいので、従来のハッシュ値と変わってしまってログインできないというハマリどころに数日悩まされた、あとuserModelに騙されて” の続きを読む

CakePHP2で存在しないコントローラ名・アクション名などがURLで指定された場合に、カスタマイズされたエラーを表示したい

以前、このブログでもCakePHPにおけるエラー処理にまつわる記事を書いたことがある。これはこれで当時は試行錯誤の中で調整したもので、あの記事を書きつつも「本当に、ただ単に存在しないコントローラ名やアクション名がURL中で指定された場合のエラー処理に、こんな複雑怪奇な設定を施さなければならないものか」などと疑わしく感じていたが、今こうして長く使っていると、あれは混乱の産物だったのだろうかなどと思うこともある。単なる存在しないルートの場合のエラー処理でいえば、ちょっとした処理だけで対応できる。 “CakePHP2で存在しないコントローラ名・アクション名などがURLで指定された場合に、カスタマイズされたエラーを表示したい” の続きを読む

CakePHP2でメール送信を手軽に行うための実装CakeEmailを使ってみたら本当に簡単すぎて便利、メールフォームがなくてもメール送信機能だけで

CakePHP2では、電子メールを使うための機能として標準提供されている「CakeEmail」という実装がある。この実装は簡単な設定だけでメール送信が実現できるというものだ。UNIX系OSであればローカルのメール配送システムを使うことも出来るし、SMTPサーバを指定して他のメール配送システムを利用してメールを送信することもできる。app/Config/database.phpのように複数の設定を記述しておき、利用時に選択することもできる。パラメータを使用時に調整することもできる。などなど、いろいろと便利に出来ているのだ。 “CakePHP2でメール送信を手軽に行うための実装CakeEmailを使ってみたら本当に簡単すぎて便利、メールフォームがなくてもメール送信機能だけで” の続きを読む

[自分用メモ] CakePHPでラジオボタンの実装をしようとしてドキュメントを見ながら作業したが非効率なので次回忘れることを危惧して備忘録的に書き残しておく

仕事でCakePHPを使うことがあるが、しばらく使わないでいるといろいろなことを忘れてしまう。Formヘルパーのラジオボタンの実装をする場面に出くわしたのだが、ドキュメントを見ても説明がまばらというか、あっち読みこっち読みとつまみ食いしながら実装していると、時間が無駄に経過してしまう。なので、自分用メモとしてある項目を残すようにときどき記事を書いている。今回はCakePHPでのラジオボタンの実装。 “[自分用メモ] CakePHPでラジオボタンの実装をしようとしてドキュメントを見ながら作業したが非効率なので次回忘れることを危惧して備忘録的に書き残しておく” の続きを読む

[自分用メモ] CakePHPでチェックボックスの取り扱いをときどき忘れてしまうので備忘録として書き残しておく

私はとにかく忘れっぽい。仕事でCakePHPを使うことがあるが、しばらく使わないでいると細かい部分を忘れてしまうことがある。Formヘルパーのチェックボックスなどはそのいい例なのだが、チェックボックスやラジオボタンはマニュアルを見ながらでも勘が戻らないといまいちピンとこない場合も多いので、自分用の即効性ドキュメントとしてこの記事を残しておくつもりである。人様向けに書いているように読めるだろうが「己が昨日書いたコードは他人のもの」というのが長くこの業界で生きてきて自負できる名(迷)言だと思っているので、これはもはや明日以降の自分に向けて書いているのだ。 “[自分用メモ] CakePHPでチェックボックスの取り扱いをときどき忘れてしまうので備忘録として書き残しておく” の続きを読む

CakePHPで$this->set()をしてもぜんぜんViewに反映されなくて2時間ぐらい悩んでてようやく「当たり前だ俺バカ」という理由にたどりつく

CakePHPおしごとをしていて、Controllerの中で$this->set(‘varname’, $value);みたいにViewに渡すパラメータを設定していたのだが、どうしても修正内容が反映されない。久しぶりのCakePHPで勘が鈍ってしまったのかと悩みつつも2時間ぐらい考えていたのだが、「おいそりゃ当たり前だろ俺バカすぎじゃない?」という不具合であった。実にくだらない理由であったが、フレームワークものは仕組みを忘れていると罠にハマるという必然も改めて体感した。 “CakePHPで$this->set()をしてもぜんぜんViewに反映されなくて2時間ぐらい悩んでてようやく「当たり前だ俺バカ」という理由にたどりつく” の続きを読む

CakePHPで私がElementsを多用する理由は、同じ(もしくは同じような)レイアウトが必要になる場面で同じ(ような)コードをいくつも増やしたくないため

CakePHPをそれほど長く使っているわけではないが、使うたびにチョコチョコと使い方が分かってくる。使い始めた当初はエレメント(APP/View/Elements)の使い方もよくわからなかったが、ぼちぼち使い始めて効果を味わいながら、ここ最近になっていろいろと便利な「レイアウトパーツ」としての価値を考え始めた。もっとも、やりすぎるとオーバヘッドになるのでほどほどにしたほうがいいだろうけれど。 “CakePHPで私がElementsを多用する理由は、同じ(もしくは同じような)レイアウトが必要になる場面で同じ(ような)コードをいくつも増やしたくないため” の続きを読む

CakePHPで、あるelement内から別のelementを呼び出すときのパラメータの引き渡しがうまくいかなかった

とあるサイトを構築中なので、いろいろとCakePHPを久しぶりにいじっている。その中で、使いまわしのできるパーツ類は可能な限り汎用化してelement(APP/View/Elements)として配置し、Viewからはこのelementを呼び出すことで簡素化・修正の容易化を図っている(やりすぎると煩雑化したり追いきれなくなるので注意)。ときどきelementから別のelementを呼び出す必要があったのだが、呼び出し側のelementでパラメータを追加しても、呼び出される側のelementには反映されていなかったのだ。 “CakePHPで、あるelement内から別のelementを呼び出すときのパラメータの引き渡しがうまくいかなかった” の続きを読む

[自分用メモ] CakePHPのContrllerとViewで、コントローラ名・アクション名を指定したURLをそれぞれ得る方法

CakePHPではViewでコントローラ名とアクション名からURLを取得する方法は一般的だと思われるが、Controllerで同じことをする場合、Viewでの同じ手法は使えない(細工すればできるっぽい感じだが)。しかし別の方法で取得することができる。 “[自分用メモ] CakePHPのContrllerとViewで、コントローラ名・アクション名を指定したURLをそれぞれ得る方法” の続きを読む