Laravel

Model Binding と 1枚のBladeで CRUD する

投稿日:

1枚のBladeで確認画面付きCRUDを実現できると、Bladeの枚数が格段に少なくなって良さそう。
その前にまずModelBindingで単なるUserを1枚のBladeでCRUDしてみる。

1枚のBladeが複数の機能で使われることになり、Bladeの中に要素と制御が増えていくため、
実は、Bladeの枚数が増えたとしても1つのBladeを単純にした方が良いのかもしれないが、
1度作っておくとずっと使えるかもしれないので、そこまでやってみる。

やること

Laravelに最初から付いてくるUserを使って、name,email,passwordのCRUDをする。
URL(route)は以下。showのパラメタをOptionalにして、あればUpdate、なければCreateする。
Update、Createは、本質的に分けるべきと考えてURLを別にしてある。
firstOrNew()を使うと、あればUserインスタンスを読み込んでくれる。
なければインスタンスを作る。ただしレコードは作らない。新規作成操作時にレコードを作成する。

コントローラ

コントローラは以下。無条件に保存するだけなのでほとんど何も書いてない。
条件が増えてくるとそれなりに行数が増える。
ModelBindingの良さは、タイプヒンティングでEloquentのインスタンスを受けられること。
変数を受けてEloquentインスタンスを探す手間がバッサリ無い。

RequestValidatorは載せていません。

Blade

肝心のBladeは以下。これだけなのに結構書かないといけない。

laravelcollective/htmlは大分前にLaravelから外れていて、使わない方が良いのかも。
自力でHTMLを書くのと大して労力が変わらない可能性がある。

結構書かないといけないから1枚にしたいのか、複数枚でよければあまり書かなくて良いのか、
微妙なところ。Laravel5.7なのでBootstrap4。validation用のクラスが全然違う。
親Blade(layouts.app)は何でも良いので載せていません。

まとめ

relationもないし懸案の確認画面もないので、単純。
次回、has a、has many relation版と、確認画面付きの版を試します。

-Laravel
-

Copyright© ikuty.com , 2019 AllRights Reserved Powered by AFFINGER4.