Junkinsのブログスマートフォン用の表示で見るJunkinsのブログこの広告は、90日以上更新していないブログに表示しています。21日目として投稿したものです。毎週水曜日Junkinsの日3日目でございます。私がCakePHP3を触って1年半になります。今年はCakePHPに慣れてきたのでいくつかPluginを作成しました。この記事ではPluginの紹介となぜ作った理由について書きたいと思います。紹介するPluginは2つです。未完成なところもありますが、今年のまとめとして書きたいと思います。Junkins/MultiStepForm1つ目はMultiStepFormです。用途は「複数ページの入力画面」です。複数のタブで入力画面を開いた場合でも、タブを超えてデータが共有されないように作成しています。作ったキッカケシステム管理者を登録する複数ページの入力画面を作る際にこんな問題が発生しました。戻るボタンで戻ってきたら、パスワードが長くなっている。Entityに変換する際にsetterが走ってしまい、パスワードがハッシュ化されていました。CakePHP3のチュートリアルにもあるようにパスワードのハッシュ化はEntityのsetterで行います。http://book.cakephp.org/3.0/ja/tutorials-and-examples/bookmarks/intro.html#id5この問題が発生した時に考えた対応策は次の3つになります。setterでハッシュ化を行わない。CakePHP2のようにbeforeSave()でハッシュ化するEntity化せず、リクエストデータをそのまま使うEntity化する際にsetterが走らないようにする。この対応策はどれも問題がありました。CakePHP3の書き方を制限してしまう。setterが使えなくなってしまう。Entity化しないとバリデーションをかけられない。バリデーションメッセージを表示するためにはEntity化した方が都合がいい。setterを走らせずにEntity化する方法はあるが、TableのFunction経由ではsetterを走らせずEntity化することができない。そこで無いなら作ってしまおう精神で作ったのがMultiStepFormです。MultiStepFormの特徴MultiStepFormの特徴は下記になります。目下の悩みはテストコードです。明日記事を書かれるhiromiさんのTransitionComponentを参考に書きたいなと思っています。Junkins/JpChronos次に紹介するのは、JpChronosです。用途は「和暦対応のChronos」です。使い方はこんな感じです。パラメータ文字列も同時に使いたいケースが多くいちいち文字列連結するのが面倒で作りました。話は逸れますが、FrozenDate、FrozenTimeを拡張して2つクラスを作成した方がいいかもしれませんね。このあたりのクラス設計が目下の悩みです。まとめCakePHP3のPluginも増えてはいますが、まだまだCakePHP2に比べると少ないなと感じます。これからPluginを増やして便利にしていければいいなと思います。俺のプロジェクトマインドマップ月別アーカイブ参加グループプログラミングはてなブログをはじめよう!wanwansiba3さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。