Laravel

LaravelでAuth系のコントローラが最初から存在するのはなぜか

ご存知の通りLaravelではartisan make:authすることでいくつかのファイルが生成・変更され、デフォルトの認証関係の機能を有効にできる。 だが、じつはこれを実行しなくとも、最初からApp\Http\Controllers\Auth\LoginControllerをはじめとする各種コントロ…

Eloquentのwhen()で、偽になる可能性のある値の存在を条件に検索する

Eloquentというかクエリビルダ側の機能だけどまあ。 when()はこのように使うことができ、条件分岐を何度も何度も書かなくて済む。 when($condition['cond_1'] ?? false, function ($query, $cond_1) { $query->where('cond_1', $cond_1); }); }…

Laravelのartisanのzsh補完書いた

サブコマンドの補完はあったんだけど、ちゃんとオプションの補完までしてくれるのがないので自分で書いてみた。zshわからんしcompsysわからんし、そもそもシェルスクリプトさっぱりなので大変苦労したが、まあ使えるものになってきたので公開。 サブコマンド…

Laravelでinput:checkboxのデフォルトでのチェックを実装する

ご存知の通りHTMLの仕様バグによりinput:checkboxは未チェック時、nameも送ってくれない。通常なら以下のようにして、フォームエラー時の再チェックを実装する。 <input type="checkbox" name="example" value="1" {!! old('example') == 1 ? 'checked="checked" : '' !!}> デフォルトが未チェックであればこれで問題ないが、デフォルトでチェック状態にしたい場合は…

Laravel Mixというかwebpackのコンパイルが、productionで重い件メモ

前提として、CSSはデフォルトにプラスα程度でデフォルトで入ってるBootstrapが重いく らい、JavaScriptが、Bootstrap入ってるファイルが別々に2つあってこっちが割と重い。 初回で13秒程度、変更検知でのコンパイルが6秒ほど。 一応developmentだと4秒未満、…

LaravelのViewのキャッシュの仕様

前の記事でBlade::setEchoFormat()の挙動を確認していたときに、思うように反映されず、キャッシュかなあと思ったらキャッシュが原因だったということがあったので、Viewのキャッシュ周りの仕様を簡単に調べてみた。 結論から書くと、Viewのキャッシュは設定…

LaravelのBladeで{{ csrf_field() }}が通る理由

なにかの間違えで、{{ csrf_field() }}と書いていたんだけどそれが通るということがあって、{{ ... }}の仕様どうなってるのかなと思い確認した。 {{ ... }}は紆余曲折を経て、に変換されていた。e()はPHPerなら予想がつくだろう通りhtmlspecialchars()のラッ…

Laravel Mixというかwebpackでconsole.log()が消えないようにする

追記 Laravel Mixとwebpackのどっちが犯人なのか探ってたら、Laravel Mixが犯人であること、さらにじつはもうdrop_consoleがデフォルトで無効になっていることに気付いた。 Remove drop_console option · JeffreyWay/laravel-mix@a9d2646 · GitHub というこ…

Laravel 5.6.27以降でログアウト後のリダイレクト先を変更したいなら、logout()ではなくloggedOut()をオーバーライドする

5.7で開発中なんだが、ログアウト後のリダイレクト先を変更するのどうしたらいいか調べてたら、ソースコードを読む感じIlluminate\Foundation\Auth\AuthenticatesUsersのloggedOut()をオーバーライドするのがよさそうだったのだが、ググると同じクラスのlogo…

LaravelのAuth::routes()で一部機能(ルート)を無効にする

Auth::routes()の本体である、Illuminate\Routing\Router::auth()を確認してて気付いたのでメモ。 false, 'reset' => false, ]); # ... これで新規登録とパスワードリセットが無効にできる。管理者だけが扱うようなアプリケーションでは使いそう。 まあ、ド…

Composerのディレクトリが~/.config/composer以下になる場合

CentOS 7環境で、新規案件のためにLaravel入れたのだがlaravelコマンドが入ってない。~/.composer/vendor/binにパスは通ってるのになあ、とよく見てみると、~/.composer/vendor/bin自体がなかった。 もうちょっと調べてみると、~/.config/composerというのが…

EloquentでのNULLABLEな日付の扱いでoptional()ヘルパ関数が便利

アクセサの値を普通に表示するだけなら、?:演算子だけでいい。PHPはnullをechoしても特に問題ないので。 created_at ?: 'default'; ただ、フォーマットしたい場合はちょっとやっかい。以下はcreated_atがNULLの場合、nullのメソッドを呼び出してエラーになる…

LaravelやRailsでcollationをデフォルトのまま使ってしまった時は

utf8mb4_unicode_ciは「か」と「が」を同一視したりするので、日本語アプリケーションでは使えない。のだが、日本語対応が十分でないフレームワークなどではよくデフォルトになっている。 最初からちゃんと設定しておけばいいのだが、忘れたまましばらくして…

Eloquentのモデルのイベントをリスニングする

ドキュメントにも一応書いてあるけどなんか半端なので。 https://laravel.com/docs/5.6/eloquent#events https://readouble.com/laravel/5.5/ja/eloquent.html#events モデルの$dispatchesEventsに、['イベント名' => イベントクラス::class, ...]の形の配列…