会員登録時にEメール確認リンクを送信
Laravel5.7に更新したら、会員登録時にEメール確認リンクを送信する新機能が追加されました。設定は簡単です。
Laravel5.7に更新したら、会員登録時にEメール確認リンクを送信する新機能が追加されました。設定は簡単です。
Laravelは一昨年あたりから細目に更新を出すようになりました。と言っても、年に2回ですが、Laravelで書いた大きなプログラムを管理する私としてはそれでも「きつい」。それで長期サポートの5.5にあぐらをかいているわけだが、しかし。
最近、統計のプログラムが必要になり、Rというプログラミング言語を習得することになりました。ウェブのアプリの開発では、php, javascript, htmlなどがメインなゆえに、それを外れたプログラミング言語を使用する機会は少なく、興味も手伝って取り組んでみました。
私のあるプロジェクトにおいて、Laravelからエクセルを生成するプログラムがあります。DBからの値を整形してエクセルに流し込み、生成されたエクセルをウェブからダウンロードできるプログラムです。記録として残すため、あるいはそれを他のプログラムにインポートするために、エクセルを生成する必要があるわけなのですが、ちょっとしたややこしい問題がありました。今回はその解決方法を共有です。
まだまだLaravelのバージョン5.5から進まない私ですが、5.6以降のバージョン(最新は5.8)を使い始めて、いいと思った改善です。
前回において、理想のバリデーションの関数、rules()を作成できたところで、今回は、そのバリデーションチェックを通過した入力データをDBに保存するところを見てみます。
前回で披露したコントローラー中でのルールの共有のメソッドrules()では、新規レコード作成と既存レコードの編集における入力項目の違いを、$actionの引数をswitchで分岐して対応しました。今回は、sometimesを使用してそれらの必要性をなくします。
1つのコントローラの中で、バリデーションに使用するルールをメソッド間で共有したい、とは誰しも思うこと。私もLaravelを習得して以来、管理性が高くしかもすっきりとした方法を求め続けていました。前回で紹介したカスタムルールの登場で、これは使えるんじゃない、という方法を見つけましたので、ここにて披露です。
これまた、5.5で登場した機能で今まで知らなかった機能がありました。
5.5より前のバージョンのLaravelでプログラムをしていたひとたちに取っては、5.5で登場したルールオブジェクトは神の恵みと言ってもいいくらい。カスタムバリデーションを作成するために、Validator::extendはどこに宣言するの?とか、グローバルでどう作成したバリデーションを共有するの?とか、取り掛かる前に悩んでいたのがウソのよう。新登場のルールオブジェクトのおかげで、カスタムルールの作成が楽しくなりました。