LaravelのAuth認証機能をカスタマイズし意図した挙動へ変更するTips
これまでのAuthシリーズでは、導入から機能拡張を行ってきました。今回は、Authまわりそのものをカスタマイズし、基本機能である「ログイン」「ユーザ登録」「パスワードリセット」に対しての挙動を自分の意図したものへ変更する操作を行います。
これまでのAuthシリーズでは、導入から機能拡張を行ってきました。今回は、Authまわりそのものをカスタマイズし、基本機能である「ログイン」「ユーザ登録」「パスワードリセット」に対しての挙動を自分の意図したものへ変更する操作を行います。
CakePHP では Widgetクラスを作成する事で独自のフォームテンプレートを定義する事が出来ます。
CakePHP3のコンポーネントクラスを導入して共通処理をまとめるまでの基礎部分を行います。コンポーネントを併用する事で重複メソッドが無くなり見通しも良くメンテナンスしやすいソースコードになります。開発チームみんなが幸せになれる。それがコンポーネントです。
CakePHPのようなPHPフレームワークを使ってWebアプリケーションを構築する際にフロントエンド側でsassやlessなどを使ってCSSを作成していく事は今や当たり前になってきました。webpackなどを手動で導入しても良いのですが、今回は気軽に素早く環境を導入できる「cakephp3-elixir」というパッケージを使ってSassやJavaScriptのコンパイル・ビルド環境を構築したいと思います。
Laravel 5.5 から 5.6 へのアップグレードを行います。2018年2月7日にLaravel5.6がリリースされました。前バージョンの5.5に関してはLTS(Long Term Support)ではありましたが、PHP7.2やSymfony4の登場によって、5.6ではそこそこの変更点があります。
2017年11月30日にPHP7.2がリリースされました。7.2ではMcrypt拡張の削除など、WEBアプリケーション、特にPHPフレームワークのコア部分にも影響のある変更点もあるので、古いまま使っているとあるタイミングでバージョンを上げようとしても色々と大変になってしまいます。なるべくPHPコアソースやフレームワークのバージョンは最新に保っていく事が運用の面でも良いと思います。
フォーム機能を構築する際に、CakePHPでは一般的にモデルが絡むバリデーションはTableクラスで定義したバリデーションルールに則って行いますが、複合的なフォームを構築する際は、そこに該当しないバリデーションが必要になる時があります。今回はModel側(Tableクラス)でのバリデーションとFormクラスのバリデーションを混合させたフォーム機能(入力+検証+登録)を構築します。
CakePHPでWebアプリケーションを構築していると、直接モデルとは関係のない(データベースを絡めない)フォームとバリデーションを用いた機能一式が必要になる時があります。そこで今回は、CakePHP3の「Formクラス」「カスタムバリデーション」を用いて、ファイルのアップロード機能を構築します。
大抵のPHPフレームワークには、簡単に認証機能(ログインやログアウト)を構築できる仕組みが備わっており、CakePHPにも「認証コンポーネント」という、認証に関する処理を扱うコンポーネントが用意されているので、それを使って素早く認証機能を構築していきます。
LaravelとRedisを使って、DBキャッシュを行います。導入の為の設定や、基本的なコマンド、引数の渡し方などで参考になりそうなものを選んで紹介します。LaravelではRedisファサードを使う事でコマンドを全て自在に扱えるのでとても便利です。
Laravelのキャッシュ操作について今回紹介するCacheファサードでのメソッドはMemcachedやRedisなど、どのキャッシュシステムを採用した場合でも共通して使えるものなので、超入門・基本編として覚えておくとよいです。DBへのリクエストが多かったり、複雑なクエリが多かったりするシステムなどには特に効果が出ます。
今回はAWSのSES(SimpleEmailService)を使ったメール送信を行います。Amazon SESはAPIメールの中でも特に優秀です。AWSでWEBアプリケーションを運用している場合はLaravelとSESの組み合わせはとてもおすすめです。
「どうも、CakePHP3 ビフォワーアフターのお時間です。」個人的にはテンプレートファイルにゴリゴリPHPが記述されているのが好きではなかったりします。そこで今回は、これらFormHelperでのフォーム生成部分を、ViewCell(ビューセル)を使ってテンプレートから切り離したいと思います。
CakePHP3には、フォームを作成する際にFormHelperという機能を使うと、フォーム作成が簡単に行えます。直接HTMLのFORMを書かなくても必要な制約をつけた上で生成してくれるので実装漏れも防げて幸せになれます。今回はCakePHP3のFormHelperの入門を行い、その後で、フォームHTMLを独自テンプレートで出力するまでを行います。
Laravelが動作する一連の動作の中に「ミドルウェア」というメカニズムがあります。HTTPリクエストに対してその入口と出口で動作し、認証からバリデーション、コンテンツ置換など様々な処理を行う事のできる。しかし一見表には出てこない影忍者のような万能メカニズムです。今回は、Laravelミドルウェアの入門的なフローの解説もしつつ、せっかくなのでWEBサイトの高速化を行ってみたいと思います。
CakePHPを使ってWEBアプリケーションを構築する際に避けて通れないのが「アソシエーション」という機能です。この機能はモデル自体をつなぐ(関連付ける)事でテーブルのリレーションを簡単に行えるようにするものですが、要するにリレーションです。アソシエーションに関してのイメージ、考え方も含めて使い方を解説します。
CakePHP3のクエリビルダーの記法をここにまとめています。CakePHP3はバージョンによって多少の違いがあります。ここに記載されているのはCakePHP3.5時点での記法です。
MVCの「V」=「View」にあたる画面表示部分の構築を、CakePHP3では「テンプレート」と呼ばれる領域のファイルを作成する事で進めていきますが、いくつもあるビューテンプレートの中の共通部分を切り出し「レイアウト」という領域のファイルにまとめておく事ができます。今回は、テンプレートの基本的な記法とレイアウトを用いてビュー開発を行います。
CakePHP3は、それが定める命名規則に沿ってbakeコマンドでクラス・ファイルを作成していくと、各々が規則によって呼応し合い、動作するPHPフレームワークです。前回の記事では、MVCの中のコントローラとビューを使い、HelloWorldの表示までを行いました。今回は、MVCの「M」=「Model」モデルを使い、データベースからデータを取得し表示するまでを行います。
CakePHP3をインストールし初期設定を行って次にやる事といえば、ひとまずMVC流して一連の流れで画面出力をしてみようという事になるかと思います。今回は入門編という事で、簡単にコントローラとビューを通して画面出力を行う事と、コントローラからビューへのデータの受け渡し&表示を行います。