やりたいこと
・画像保存のアプリを作成したい
・画像の更新(/update/{id})をすると新しい画像をアップロードする
現状
・エラーは出てないけど、更新されない状態
###コード
Controller.php
php
1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6use \App\Memo; 7use \App\User; 8use Illuminate\Support\Facades\Storage; 9 10 public function store(Request $request) 11 { 12 $data = $request->all(); 13 //dd($data); 14 $image = $request->file('image'); 15 //dd($image); 16 if($request->hasFile('image')){ 17 $path = \Storage::put('/public', $image); 18 $path = explode('/', $path); 19 }else{ 20 $path = null; 21 } 22 $memo_id = Memo::insertGetId( 23 ['title' => $data['title'], 24 'content' => $data['content'], 25 'user_id' => $data['user_id'], 26 'image' => $path[1], 27 'url' => $data['url'], 28 'status' => 1]); 29 30 // リダイレクト処理 31 return redirect()->route('home'); 32 } 33 34 public function update(Request $request , $id ,Memo $memos){ 35 $inputs = $request->all(); 36 37 if($request->hasFile('image')) { 38 Storage::delete('public' . $memos->image); //元の画像を削除 39 $path = $request->file('image')->store('public'); 40 $memos->image = basename($path); 41 $memos->save; 42 } 43 44 Memo::where('id',$id)->update(['title' => $inputs['title'], 45 'content' => $inputs['content'], 46 'url' => $inputs['url'] 47 ]); 48 49 return redirect()->route('home'); 50 } 51
web.php
php
1<?php 2 3 Route::group(['middleware' => ['auth', 'can:admin-higher']], function () { 4 Route::get('/newpost', 'AccountController@newpost')->name('newpost'); 5 Route::get('/create', 'AccountController@create')->name('create'); 6 Route::post('/store', 'AccountController@store')->name('store'); 7 Route::get('/edit/{id}', 'AccountController@edit')->name('edit'); 8 Route::post('/update/{id}', 'AccountController@update')->name('update'); 9 Route::post('/delete/{id}', 'AccountController@delete')->name('delete'); 10 Route::get('/userlist', 'AccountController@userlist')->name('userlist'); 11 Route::get('/userdetail/{id}', 'AccountController@userdetail')->name('userdetail'); 12 13 });
edit.blade.php
php
1@extends('layouts.app') 2 3@section('content') 4<div class="row justify-content-center ml-0 mr-0 h-100"> 5 <div class="card w-100"> 6 <div class="card-header">メモ編集</div> 7 8 <!-- メモの内容--> 9 <div class="card-body"> 10 <form method='POST' action="{{route('update',['id' => $memo['id']] ) }}" enctype="multipart/form-data"> 11 @csrf 12 <input type='hidden' name='user_id' value="{{ $user['id'] }}"> 13 14 <!-- タイトルの表示 --> 15 <div class="form-group"> 16 <input type=”text” name='title' class="form-control"rows="10">{{ $memo['title'] }}</input> 17 </div> 18 19 <div class="form-group"> 20 <textarea name='content' class="form-control"rows="10"> 21 {{ $memo['content'] }} 22 </textarea> 23 24 25 <div class="form-group"> 26 <label for="image">画像のupload</label> 27 28 <input type="file" class="form-control-file" name='image' id="image"> 29 </div> 30 31 <!--URLをとってくる--> 32 <div class="mb-3"> 33 <label for="disabledTextInput" class="form-label">URLの入力してください</label> 34 <input type="text" id="disabledTextInput" class="form-control" name='url' placeholder="URL"> 35 </div> 36 37 </div> 38 <div class="form-group"> 39 </div> 40 <button type='submit' class="btn btn-primary btn-lg">更新する</button> 41 </form> 42 43 </div> 44 </div> 45</div> 46@endsection 47 48
追加コード
Memo.php
php
1<?php 2 3namespace App; 4 5use Illuminate\Database\Eloquent\Model; 6 7class Memo extends Model 8{ 9 /* 10 public function admins(){ 11 return $this->belongsTo('App\Admin'); 12 } 13 */ 14 15 protected $fillable = [ 16 'title', 17 'contnet', 18 'url', 19 'image' 20 ]; 21}
ddで$memoを確認した結果
"image" => "UdvdOkrYjJKGMDPBVAQcVQNJ99VHHpSWl5xV4KIa.jpg"
public/storageの中身を確認⇨"UdvdOkrYjJKGMDPBVAQcVQNJ99VHHpSWl5xV4KIa.jpg"が存在している
DBの中身は更新前のimageになっている
回答1件
あなたの回答
tips
プレビュー