前提・実現したいこと
画像をアップロードする時に、getClientOriginalNameを使いその後にバリデーションをかけたいと考えております。
エラーメッセージ
下記エラーメッセージになります。
php
1Call to a member function validate() on string
該当ソースコード
profile.blade
php
1 <label for="プロフィール画像">プロフィール画像</label>: 2 <input class="input" name="images" type="file"> 3 @if ($errors->has('images')) 4 <div class="text-danger"> 5 {{ $errors->first('images') }} 6 </div> 7 @endif
PostController
php
1public function update(Request $request) 2 { 3 $user = User::find(Auth::user()->id); 4 $user->images = $request->images->getClientOriginalName()->validate([ 5 'images' => 'required', 6 ]); 7 8 $uploaded_images = $request->file('images'); 9 if($request->hasFile('images') && $uploaded_images->isValid()) 10 { 11 $file_name = $request->file('images')->getClientOriginalName(); 12 $path = $request->file('images')->storeAs('public', $file_name); 13 } 14 $user->save(); 15 return redirect('top'); 16 }
Route
php
1Route::post('/update', 'PostsController@update');
試したこと
バリデーションをかけずに下記記述に書き換えたところ、うまく動作します。
PostController
php
1$user->images = $request->images->getClientOriginalName()->validate([ 2 'images' => 'required', 3]);
php
1$user->images = $request->images->getClientOriginalName();
また、originalNameにせずにimplodeを使いファイル名を取得したところ、バリデーションのかかった状態で処理されます。
PostController
php
1$user->images = implode($request->validate([ 2 'images' => 'required', 3]));
バージョン
laravel 5.5.48
php 7.4.5
homestead
ご教授の程よろしくお願いいたします。
あなたの回答
tips
プレビュー