初心者ゆえのくだらないミスだけど、忘れないように残します。
あうとぷっちょ
環境
OS: Windows11 バージョン23H2
Laravel: 9.52.16
PHP: 8.1.0
開発環境:MAMP
目次
①「Unable to guess the MIME type as no guessers are available (have you enable the php_fileinfo extension?)」
②「must not be greater than 11」
③「Log::●●();」「dd();」などを記入してもLaravel.logに反映されない。
①「Unable to guess the MIME type as no guessers are available (have you enable the php_fileinfo extension?)」
●なんて言ってんの?
→「php_fileinfoという拡張モジュールがないからMIME typeがわからんやで。php_fileinfo持ってる?」
●解決法
php.iniに「extension=php_fileinfo.dll」を追記する。
☟参考記事
参考記事と同じく自分もiniにそもそも記述がなかったので、単純に文言を追加した。
●php_fileinfoってなに
php_fileinfoはファイルの拡張子を判別するために必要。
画像ファイルのアップロードやバリデーションの時に必要になる。
②「must not be greater than 11」
●なんて言ってんの?
→「11より大きい数字はあかんやで。」
●解決法
Request.php/rules()に記述した「max:11」を変更した。
これはエラーというより、バリデーションで引っかかった内容。
自分の中でよくわからない勘違いをしていただけだった。
課題の中で商品を新規登録するために情報を入力するフォームがあり、金額などを入力するところでこのルールが適用されてしまったからエラーが出た。
「バリデーションルール」と「データベース定義」がなぜかごっちゃになっていた。
そのためバリデーションルールとデータ型を少し調べなおした。
☟参考記事
●調べたまとめ
・INT(11)の11は表示幅のこと。max:数値は実際に入力する値の上限のこと。
・データ型varcharは文字列のために、INTは数値のために使う。
ただしバリデーションルールのmaxは文字列にもなるし数値にもなる。
・データ型にcharがあるけど、varcharとの違いは可変or固定文字列かどうか。
③「Log::▽▽();」「dd();」などを記入してもLaravel.logに反映されない。
●解決法
bladeに{{$error}}を追加した。
@if ($errors->any()) <!-- エラーが出たときに表示される部分 -->
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
データ新規登録しようにもデータの送信がされるだけで、データベースに保存されてない。
→デバッグしよう!
ということでコントローラーやモデルに「Log::▽▽();」「dd();」を記述しても履歴が残らなかった。
bladeに上記を記述して、見た目もログ上にもエラー文言が表示されるようになった。
☟Logファサードについて Laravel公式
おわりに
いまは「call to a member function メソッド名 on null」に苦しめられている。