今日のYWT
やったこと
Travelog
バリデーションメッセージの編集
laravel.iniのupload_max_filesizeを超えるような画像がアップロードされた時、意図したバリデーションメッセージが出なかったのでそれをどうにかしていた
// バリデーションルールを設定
public function rules()
{
return [
// 略
'files.*.photo' => 'bail|image|mimes:jpeg,bmp,png|max:2000',
];
}
public function attributes()
{
return [
// 略
'files.*.photo' => 'ファイル',
];
}
public function messages()
{
return [
// attribute名 . 引っかかったバリデーションルール => 出したいメッセージ
'end_date.after_or_equal' => '開始日または終了日を確認してください',
'files.*.photo.max' => 'ファイルサイズが大きすぎます(2MBまで)',
];
}
これで、5MBのpngファイルをアップロードした時、files.*.photosがサイズ制限のmax:2000に引っかかったら、「ファイルサイズが大きすぎます」というメッセージが出ると期待したが、実際は「ファイルのアップロードに失敗しました」と出てしまう。
このmax:2000をmax:200に変更し、600Kのpngファイルをアップロードしようとすると、意図したバリデーションメッセージである「ファイルサイズが大きすぎます」と表示される。
また、形式のエラーを発生させようと別にgifファイル(サイズ制限はクリア)をアップロードすると、ちゃんと「ファイルにはjpeg, bmp, pngタイプのファイルを指定してください」と表示される。
メンターさんから、upload_max_filesizeを大きめに設定して、バリデーションに到達するように調整するとどうか?とあったのでそのように設定
また、フォームに形式とファイルサイズの注意書きを追加する
わかったこと
バリデーション
uploadedというバリデーションルールに引っかかってたようなので、このメッセージを編集することで変えられたようだ
ec2でのphp.ini(php設定ファイル)の場所
ec2にログインし、 cd /etc
cat php.ini ここにある
次やること
dockerと向き合う