PHP

[PHP][Laravel] ログイン後のリダイレクト先を変更する

バージョン Laravel 5.8 概要 ログイン後に遷移するリダイレクト先を例えばダッシュボード画面(/dashboard)にしたい。 コード ◾️LoginController class LoginController extends Controller { use AuthenticatesUsers; /** * Where to redirect users afte…

[Laravel][Vue.js] Laravel + vue で郵便番号から住所を取得

バージョン Laravel 5.8 Vue.js 2.6.10 概要 郵便番号-住所検索API (zipaddress.net)の外部APIを呼び出して郵便番号から住所を取得する。 ※なぜこの方式を採用したのかは最後に記載します。 以下の流れになる。 vueから自サイトのAPIを呼び出してLaravel側の…

[PHP][Laravel] データベースクエリビルダ(Model)でleft joinの絞り込みon条件にパラメータを渡して複数指定する

バージョン Laravel 5.8 概要 LEFT JOINのON条件を複数指定する。 条件にはパラメータを渡したい。 コード ◾️Model $users = DB::table('users') ->leftJoin('posts as user_posts', function ($join) use ($type) { $join->on('users.id', '=', 'user_posts…

[PHP][Laravel][vue.js][Javascript] vueで空白項目を登録する際にバリデーションでnullableを設定しても動作しない対応

バージョン Laravel 5.8 Vue.js 2.6.10 概要 たとえばURL登録フォームのバリデーション設定が以下の場合 'url' => 'max:100|nullable|active_url', 空白の場合はバリデーションで引っかからないはずだが vueから登録しようとするとactive_url(urlバリデーシ…

[PHP][Laravel] primaryKeyが複数ある、またはint型でない場合にEloquentモデルでレコードを登録する

バージョン Laravel 5.8 概要 複合主キーやint型以外の主キーの場合にcreate()でレコード追加しようとしたらエラーが発生する。 そんな時はモデルに以下を追加する。 public $incrementing = false; 詳細は公式を。 Eloquent:利用の開始 5.8 Laravel 主キー…

[PHP][Laravel][vue] vue側に大量のconfig値や定義値を渡したい

バージョン Laravel 5.8 Vue.js 2.6.10 概要 Laravel側で管理しているconfigフォルダで管理している値や定数などを Vue側から呼ばれたAPIに渡して判定条件や表示文字列に使用する。 渡したい値が1つや2つであれがblade側で以下のようにして渡せる。 <hoge-component code="{{ $user_code }}"></hoge-component> しか…

[PHP][Laravel] パスワード変更時の「現在のパスワード」チェックバリデーション

バージョン Laravel 5.8 概要 パスワード変更機能で現在のパスワードをチェックするバリデーション処理。 コード use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Hash; public static function getRules() { return [ 'password' => …

[PHP][Laravel] APIのResponseデータをカスタムしてシステム内でレスポンス形式をルール化・共通化する

バージョン Laravel 5.8 概要 レスポンスマクロを用いて、APIのレスポンスデータをカスタムして 成功時とエラー時(HTTPステースコードは200を返して、受信側でエラー処理をさせる)のフォーマットを合わせる。 コード ServiceProviderクラスを追加する。 ■a…

[PHP][Laravel] Handler.phpで特定の例外エラー(Exception)を処理対象外としたい

バージョン Laravel 5.7 概要 発生した例外エラー(Exception)をHandler.phpのreportメソッドでbugsnagやslackなどに通知する処理があった場合 大量に発生するような例外を処理の対象外とする。 例としてAuthenticationExceptionを除外する。 コード ■App\Ex…

[PHP][Laravel] Laravelでログをカスタムしてタイムゾーン日時、ユーザーID、クラス名などの様々な情報を出力したい

バージョン Laravel 5.7 概要 Laravelのログ機能を拡張して、UTCとJSTの時刻、IPアドレス、呼び出し元クラス名・メソッド名、 ユーザーIDを出力する。 なお、PHP側のタイムゾーンはUTCとする。 Laravelは5.6からログ出力方法が変わったのでそれ以前のバージ…

[PHP][Laravel] Auth::user()でUsersテーブルに関連のあるテーブルからデータを取得したい

バージョン Laravel 5.7 概要 Usersテーブルの値はAuth::user()で取得できるが、例えばUsersテーブルに関連しているUser_Profilesなどからも値を取得したい場合。 EloquentのEager LoadingでRelationships情報を取得させる。 上記詳細はここを。 laravel.com…

[PHP][Laravel] 【UTC対応】Eloquent ミューテタを使ってDBデータ取得時にタイムゾーンの日時に変換する

バージョン Laravel 5.7 概要 Eloquentミューテタを使ってDBに登録されているUTC日時をユーザのタイムゾーン日時に変換して取得させる。 ミューテタを使えば日時だけでなく小文字大文字変換など色々できるので下記でご確認。 readouble.com コード mutate関…

[PHP][Laravel] リダイレクトバック(redirect()->back())でのURLクエリパラメータ対応

バージョン Laravel 5.7 概要 前の画面でURLクエリパラメータが指定されており、 その画面にリダイレクト バックした際にクエリパラメータを渡したい。 下記2タイプのどちらかで対応はできたが、単純にredirect()->back()で対応する方法が 見つからなかった…

[PHP][Laravel] リダイレクトでbladeのjsに配列を渡す

バージョン Laravel 5.7 概要 バリデーションエラーなどでリダイレクトで元の画面に戻した際に 入力データ以外にPHP側で用意した配列情報をbladeのJavascriptに渡す。 コード ■TestController.php // バリデータ if ($validator->fails()) { // 渡すデータ配…

[PHP][Laravel][バリデーション] 開始と終了の日付バリデーション処理

概要 開始日と終了日のテキストボックスがある。 それぞれ必須入力ではなく、指定可能期間は本日〜1ヶ月後とする。 開始日が指定された場合のみ、「開始日 <= 終了日」の条件が発生。 コード public function rules() { $today = date("Y-m-d"); $nextmonth…

[PHP][Laravel] blade内のold関数にデフォルト値を指定

コントローラ側でDBなどから初期値を取得し、bladeのold関数を使用している箇所に反映する方法。 バリデーションなどで戻ってきた場合には修正値が反映される。 <input type="text" id="remarks" name="remarks" value="{{ old('remarks' , $params['remarks'] ) }}"> old関数の第二引数に初期値の変数を指定すれば良い。 PHPフレームワーク Laravel入門作者: 掌…

[PHP][Laravel][バリデーション] バリデーション regexでパイプを使いたい

前回のエントリーでregexにパイプを使う必要があり、 そのままLaravelのバリデーションに書いたら上手くいかなかったので対応を記載。 waterfalls.hatenablog.com 【NG】 $request->validate([ 'name' => 'required|max:25', 'password' => 'required|confir…

[PHP][バリデーション] パスワード 3種類のうち2種類使用のバリデーション

PHP

パスワードのバリデーション処理で複数種類のルールからいくつかを使用したかのチェック処理について。 やりたいこと 半角英字(大文字、小文字の区別をしない) 半角数字 記号(「!_@」のみ) 上記3種類のうち2種類以上を使用しているかを正規表現でチェ…