定期的にQiitaで記事を投稿(アウトプット)することが大事かなと思い、間違い等もあると思うが、書いていく。
下の記事を参考にToDoアプリを作る際の備忘録を残していく。
下の備忘録は、全てこちらの記事に載っているのでそちらを参考にする。
HyperTextCandy LaravelによるToDoアプリ作成記事
環境
- Windows10
- Xampp
- MySQL
- PHP7
- Laravel7
- VsCode使用
準備
$ laravel new ToDo
で新しくToDoプロジェクトができあがった。かんたん。
$ php artisan serve
でロケットが出ることを確認。オッケーちゃんとできてる。
色々
- コントローラ作成
- マイグレーション作成
- モデルクラスの作成
- シーダーの作成
-
$ php artisan make:seeder FoldersTableSeeder
でシーダーを作成 - シーダーの中にテストデータを記述する。参考文献を参照。ただし、
Carbon::now()
はLaravel7では最初からパッケージ化されているのでnow()
でいける。 -
$ php artisan db:seed --class=FoldersTableSeeder
でテストデータをテーブルに入れる。「successfully」がでればオッケー。
-
- タスクを選択しているかしていないか
- viewのaタグに三項演算子を用いてactiveを付与する。
{{ $current_folder_id === $folder->id ? 'active' : '' }}
- viewのaタグに三項演算子を用いてactiveを付与する。
- tinkerの利用
-
$ php artisan tinker
すると、コマンドラインからアプリの機能を見ることができる。例えば>>> $folder = \App\Folder::find(1);
すると、Folderテーブルからid=1を拾ってきて表示してくれる。
-
アクセサ
これまでの学習ではよくわかっていなくてスルー気味だったので、ここで確認。
モデルクラス内で、get[HogeHoge]Attributeを定義すると、[モデル名]->[hoge_hoge]でアクセスできるとのこと。
viewで条件分岐してたけど、modelのなかに組み込むというのもありだよね。
FormRequestクラスの作成
フォーム入力時には、バリデーションが必要ですよね。ちゃんと学びましょう。
$ php artisan make:request CreateFolder
app/Http/Requests
フォルダに CreateFolder.php
が作られる。
このCreateFolderにバリデーションルールを記述する。
その後、
Controllerでメソッドの引数で渡すRequestをCreateFolderクラスに変更する。FormRequestクラスは、Requestクラスと互換性あり。
つまり、
public function index(Request $request)
の部分を、public function index(CreateFolder $request)
とすることで、FormRequestクラスである、「CreateFolder」を使ってバリデーションしたあとにフォームを$requestで受け付けることができる。
バリデーション違反のときのメッセージ
バリデーション違反の場合のメッセージは、resources/lang/en/vallidation.php
の中に、連想配列で記述されている。
それを日本語にするには、jaディレクトリを作って、上のファイルをそのままコピーして、該当する部分を変えていく。楽したいなら、誰かが作ってくださったものを利用するのが良いかも。
共通のバリデーションメッセージはここにあるが、別個に作る場合は、FormRequestクラスの中に、messages()メソッドを作ってreturnしてやるといい。
編集画面のTips
oldメソッドの第一引数に、inputのname属性を指定、第二引数にはデフォルト値を指定する。そうすると、編集画面時には、もうすでに入力値があればそれを出力してくれる。