intervention/imageのライブラリー使用して
写真の投稿をできるようにしたいです。
$ composer require intervention/imageインストールして
app.phpに二行追記いたしました
PostController.php
public function create(Request $request)のcreateがうまく行かずにThe image must be a file.となります、ご教授お願いいたします。
ファイル名app.php 'providers' => [ // 写真投稿の記載 Intervention\Image\ImageServiceProvider::class, ], 'aliases' => [ // 写真投稿の記載 'Image' => Intervention\Image\Facades\Image::class, ],
ファイル名PostController.php public function new(){ return view('posts/new'); } public function create(Request $request){ $post = new Post; $form = $request->all(); // 最低限なバリデーション処理です。 $rules = [ 'name' => 'required', 'brand' => 'required', 'image' => 'required|file|image|mimes:jpeg,png,jpg,gif|max:2048', 'user_id' => 'integer|required', ]; $message = [ 'name.required'=> '靴の名前が入力されていません', 'brand.required'=> 'ブランド名が入力されていません', 'image.required' => '靴の写真が入力されていません', 'user_id.integer' => 'System Error', 'user_id.required' => 'System Error', ]; $validator = Validator::make($form, $rules, $message); if($validator->fails()){ return redirect('post/new') ->withErrors($validator) ->withInput(); }else{ unset($form['_token']); $post->name = $request->name; $post->brand = $request->brand; $post->image = $request->image->store('public'); $post->user_id = $request->user()->id; $post->save(); return redirect('/'); }
ファイル名index.blade.php <div class="holder"> <div class="items-images"> <ul class="images"> @if(count($posts) > 0) @foreach($posts as $post) <li class="image"> <div class="product"> <a class="product-image" href="post/show/{{ $post->id }}"> <div class="product-card"> <span class="product-price">{{ $post->brand }}</span> <img class="product-image-size" src="{ asset (/storage/{{$post->image}}) }" alt="商品写真"> <div class="product-description"> <span>{{ $post->name }}</span> </div> </div> </a> </div> </li> @endforeach @else <div>投稿記事がありません</div> @endif </ul> </div> </div>
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/28 12:17
2020/03/28 13:49
2020/03/29 04:46
2020/03/29 04:50