
じろう
2019年11月02日に参加
学習履歴詳細
[Laravel]課題アプリ作成。バリデーションでbailを使ってみる。ページネーション実装。写真の加工・投稿処理がstoreとuploadで重複してるので、リポジトリ作って切り出してみる。
今日のYWT
やったこと
Travelog
バリデーション
ページネーション
Fat Controllerの解消を目指す
VSCode拡張や設定
わかったこと
カスタムバリデーション
bail
、てっきり一つ引っかかったらそのあとの他のカラムに対するバリデーションルールも飛ばしてしまうのかと思った。
|
を使って一つのカラムに複数のルールを設定しているとき、どこかのルールに引っかかったらそのカラムの残りのバリデーションルールの判定を停止する。
// 画像ファイル 'files.*.photo' => 'bail|image|mimes:jpeg,bmp,png',
こう書けば、image
のルールに引っかかったらmimes
はチェックしない。
コレクションでページネーション
コレクションに対して、直接paginate
は効かない。
ので、やり方を調べた。
Laravelで独自のページネーターを作成する
Laravel pagenationリンクのhttps化
Laravel 5.7 データベース:ペジネーション
forPage
でコレクションでもページネーションができるようになる!
public function index(Request $request) { $articles = Article::all()->sortByDesc('created_at') ->load([ 'user', 'likes', 'tags', 'photos' ]); // ページネーション用 $articlePaginate = new LengthAwarePaginator( // forPageでコレクションでもページネーションできる $articles->forPage($request->page, 5), $articles->count(), 5, null, ['path' => $request->url()] );
ページネーションでもHTTPS通信を可能にする
AppServiceProvider.php
に、以下の記述を追加。
public function boot() { if($this->app->environment('production')) { \URL::forceScheme('https'); // ページネーションのURLもhttpsに対応させる $this->app['request']->server->set('HTTPS','on'); } }
リポジトリパターン
コントローラの処理をリポジトリに移して、コントローラを見た時にEloquentのやりとりがないように・考えなくてもいいようにする
そうしないとテストがまともに書けないから。
コーディングしてからテストだと人間は都合の良いテストを書く。だからテスト駆動開発が生まれた。しかしテスト駆動開発は人間には早すぎるって言ってた。
次やること
ArticleControllerの処理をリポジトリに切り出してみる!
Laravel
2020年11月18日(水)
5.1時間