[PHP][Laravel] JSON内の値(複数行)をバリデーションする

バージョン Laravel 5.8 概要 JSONで渡された複数行のデータに対してバリデーションする。 例として以下のJSONに対して、バリデーションを実施する。 ◾️JSON [{"id": 1, "val": "abcde"}, {"id": 2, "val": "あいうえお"}, {"id": 3, "val": ""}] ◾️バリデー…

[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側の…

[C++][MFC] C++(VC++)でダイアログに枠無しの子ダイアログを埋め込み、フレーム管理や共通化を実現する

バージョン C++:14 概要 例として複数のダイアログでトップエリアが同一の場合にそこを子ダイアログとして作成し、各ダイアログはそれを埋め込むだけで共通のデザインを実装できる。 要点 子ダイアログを親ダイアログで動的に生成する。 子ダイアログ自体を…

[vue.js] routerでpropsに値を渡してURL遷移する

バージョン Vue.js 2.6.10 概要 routerのpushでURL遷移する際にpropsにデータを渡す方法。 コード ◾️hoge.vue(遷移元) <script> export default { methods: { newPage() { this.$router.push({ name: "user_list" , params: {user_code : this.userid}}).catch(() </script>…

[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…

[vue.js][Javascript] リアクティブに一覧表の一部の値を更新する

バージョン Vue.js 2.6.10 概要 一例として一覧表示の該当項目行の一部の値を更新し、その内容をリアクティブに表示反映する。 指定行を削除するのはググるとヒットしやすいが行の値の一部だけを更新するのがなかったので記載する。 コード ◾️hoge.vue <script> expo…

[vue.js] router.jsで登録したpathをnameから取得する(遷移させない)

バージョン Vue.js 2.6.10 概要 pushを使えば遷移できるが、今回はパスだけ取得したいケース。 resolveを使えばパスを取得できる。URLパラメータのある場合もOK。 コード ◾️router.js { path: "/user/list", name: "userlist", component: () => import("./v…

[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' => …

[書籍][Laravel] 「PHPフレームワーク Laravel入門」まずはの一冊

PHPフレームワーク Laravel入門作者:掌田津耶乃発売日: 2017/09/16メディア: 単行本 結論 Laravelは未経験 他の言語、フレームワークの経験有り webアプリケーションの開発経験がある 上記に当てはまる人にとって本書はLaravelの入口として超絶におすすめで…

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

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

[書籍][英語] 「英単語の語源図鑑」をお勧めできない人

TOEICの単語対策として「英単語の語源図鑑」を購入。 英単語の語源図鑑作者: 清水建二,すずきひろし,本間昭文出版社/メーカー: かんき出版発売日: 2018/05/23メディア: 単行本(ソフトカバー)この商品を含むブログ (1件) を見る 本の内容 ざっくり言うと英…

[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関…

[C++] C++でstaticのarrayで値としてenumを使いたい

C++

バージョン C++ 11 概要 staticとしてstd::arrayをenumの値を使って初期化して使いたいがコンパイルエラーとなってしまう。 そんな時はconstexprを使う。 コード // .h class AnimalShop { public: enum class AnimalType { DOG = 0, CAT, MOUSE, LION, ELEP…

[Bootstrap] Bootstrap 4 で確認ダイアログを表示し、選択ボタンを判断してsubmitする

バージョン Bootstrap 4 概要 以下のケースを想定。 一覧表に「削除」ボタン(type=button)が複数あり、クリック時にBootstrap 4の確認ダイアログを表示して 「はい」なら選択した行のキーをsubmitする。 Bootstrap 4の確認ダイアログを出すだけなら公式サイ…

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

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

[C++][MFC] C++(VC++)でカレントディレクトリの1つ上のパスを取得する

概要 C++でカレントディレクトリを取得して、その上の親ディレクトリパスを取得する。 「..¥」を末尾に付与して1つ上のパスに移動する方法は 私の場合、別処理で「.」から拡張子位置を判断する処理があったため使えなかった。 コード char buf[MAX_PATH]; /…

[PHP][Laravel] バリデーション前にデータを修正する

バージョン Laravel 5.7 概要 例えば、画面に「年月日」と「時刻」の入力エリアがあり、 それらを連結してdatetimeとしてバリデーションしたい場合などで バリデーション検証される前にデータを修正させる。 コード ■FormRequest protected function getVali…

[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…

[Javascript][jQuery] セレクトボックス メインカテゴリーとサブカテゴリーを連動させる

概要 select要素のセレクトボックスで階層化されたメインカテゴリーを選択すると 関連したサブカテゴリーに表示を連動させる。 ①サブカテゴリーの初期表示は未選択状態を示すoption要素のみを表示 ②メインカテゴリーで項目を選択する ③サブカテゴリーは連動…

[Javascript] ジグザク線(zig zag line)、波線を描画する

ジグザグ線(波線)を描画する 開始点と終了点を指定し、ジグザグ線を描画する方法。 Javascriptだけでなく他の言語でも応用できる。 <html> <head> <script> class Point{ constructor(x,y){ this.x = x; this.y = y; } } var startP = new Point(50,60); var endP = new Point</head></html>…

[Visual Studio][C++] Visual Studio 2017 のC++(VC++)で「構造のガイド線を表示する」が有効にならない為、拡張機能を入れる

本件はVisual Studio 2017でC++(VC++)開発時のみに発生する。 VS2015以前はコードのガイドラインを拡張機能「Indent Guides」、 VS2017以降はVSの標準機能として 「[オプション]>[テキストエディター]>[全般]>[表示]>[構造のガイド線を表示する]にチェッ…

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

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