前提・実現したいこと
編集フォームから更新をする際に、画像データを入力せずにpost出来るようにしたいです。
条件
※入力を必須にはしない。 'image' => 'required',は使用しない
※データベースの設定を替えたくない。 画像の設定は、NULL:いいえ、デフォルト値:なしになっています。
環境
PHP7.2.3
Laravel 5.4
発生している問題・エラーメッセージ
エラー文:
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'image' cannot be null (SQL: update
articles
setarea
= west,image
= ,updated_at
= 2019-12-05 17:22:44 whereid
= 17)
該当のソースコード
入力フォーム edit.blade.php
<div class="image @if(!empty($errors->first('image'))) has->error @endif">
<input type="file" name="image" enctype="multipart/form-data" value="{{$info['image']}}"> <span class="help-block">{{$errors->first('image')}}</span> </div>
確認画面(一覧になる仕様です。) edit_confirm.blade.php
<td>画像</td>
<td>{{$info['image']}}</td>
中略
<input type="hidden" name="image" enctype="multipart/form-data" value="{{ $info['image'] }}">
試したこと
検索をしてinputタグに、
enctype="multipart/form-data"
を入力しましたがエラーが消えなかったです。
エラー回避できる方法あれば教えていただきたいです。
よろしくお願いいたします。
追記
laravel
1コントローラー 2 // 編集画面 遷移 3 public function sendData($id){ 4 $info = Article::find($id); 5 return view('article/edit',['info'=>$info]); 6 } 7 8 // 編集 確認画面 9 public function confirmEdit(ArticleRequest $request) 10 { 11 $info = $request->all(); 12 return view('article/edit_confirm',compact('info')); 13 } 14 15 // 更新画面 16 17 public function edit(ArticleRequest $request) 18 { 19 $id =$request->id; 20 $data = Article::find($id); 21 // 取得したデータに上書きする 22 $data->name = $request->name; 23 $data->email = $request->email; 24 $data->age = $request->age; 25 $data->area = $request->area; 26 $data->gender = $request->gender; 27 $data->media1 = $request->media1; 28 $data->media2 = $request->media2; 29 $data->note = $request->note; 30 $data->image = $request->image; 31 $data->save(); 32 33 return view('/article/edit_complete',compact('data')); 34 }
laravel
1view 入力フォーム 2@extends('layout/layout') 3 4@section('content') 5 6@if($errors->any()) 7 <div class="errors"> 8 <ul> 9 @foreach($errors->all() as $error) 10 <li>{{ $error }}</li> 11 @endforeach 12 </ul> 13 </div> 14@endif 15 16 17<div class="row"> 18 <form method="post" action="{{ url('/article/insert_confirm')}}"> 19 {{ csrf_field() }} 20 <br> 21 <br> 22 <h1>新規登録</h1> 23 <br> 24 <div class="form-group @if(!empty($errors->first('name'))) has-error @endif"> 25 <label>名前</label> 26 <input type="text" name="name" class="form-control"> 27 <span class="help-block">{{$errors->first('name')}}</span> 28 </div> 29 30 <div class="form-group @if(!empty($errors->first('email'))) has-error @endif"> 31 <label>E-Mail</label> 32 <input type="mail" name="email" class="form-control"> 33 <span class="help-block">{{$errors->first('email')}}</span> 34 </div> 35 36 <div class="form-group @if(!empty($errors->first('age'))) has-error @endif"> 37 <label>年齢</label> 38 <input type="number" name="age" class="form-control"> 39 <span class="help-block">{{$errors->first('age')}}</span> 40 </div> 41 42 <div class="form-group @if(!empty($errors->first('area'))) has-error @endif"> 43 <label>エリア</label> 44 <select name="area" class="form-control"> 45 <option value="east" selected>東日本</option> 46 <option value="west">西日本</option> 47 </select> 48 <span class="help-block">{{$errors->first('area')}}</span> 49 </div> 50 51 <p><b>性別</b></p> 52 <div class="radio-inline @if(!empty($errors->first('gender'))) has-error @endif"> 53 <label> 54 <input type="radio" name="gender" value="1" checked>男性 55 </label> 56 <span class="help-block">{{$errors->first('gender')}}</span> 57 </div> 58 59 <div class="radio-inline"> 60 <label> 61 <input type="radio" name="gender" value="2" @if(Request::old('gender')=="2") ckecked @endif>女性 62 </label> 63 <span class="help-block">{{$errors->first('gender')}}</span> 64 </div> 65 66 <p><b>告知メディア</b></p> 67 <div class="form-check @if(!empty($errors->first('media1'))) has->error @endif"> 68 <label> 69 <input type="hidden" name="media1" value=""> 70 <input type="checkbox" name="media1" value="web" @if(Request::old('media1')=="web") checked @endif>web 71 </label> 72 <span class="help-block">{{$errors->first('media1')}}</span> 73 </div> 74 <div class="form-check @if(!empty($errors->first('media2'))) has->error @endif"> 75 <label> 76 <input type="hidden" name="media2" value=""> 77 <input type="checkbox" name="media2" value="tv" @if(Request::old('media2')=="tv") checked @endif>tv 78 </label> 79 <span class="help-block">{{$errors->first('media2')}}</span> 80 </div> 81 82 <div class="textarea @if(!empty($errors->first('note'))) has->error @endif"> 83 <!-- <label for="textarea1">ご意見</label> --> 84 <textarea id="textarea1" class="form-control" name="note" placeholder="ご自由に入力ください。">{{Request::old('note')}}</textarea> 85 <span class="help-block">{{$errors->first('note')}}</span> 86 </div> 87 88 <div class="image @if(!empty($errors->first('image'))) has->error @endif"> 89 <input type="file" name="image"> 90 <span class="help-block">{{$errors->first('image')}}</span> 91 </div> 92 93 <br><br> 94 <input type="submit" value="確認画面へ" class="btn btn-success"> 95 </form> 96 97 <br> 98 <form method="post" action="{{ url('/article/list')}}"> 99 {{ csrf_field() }} 100 <input type="submit" value="リスト一覧に戻る" class="btn btn-primary"> 101 </form> 102@stop
laravel
1 2@extends('layout/layout') 3 4@section('content') 5 6@if (session('media')) 7 <div class="row"> 8 <div class="col-md-8 col-md-offset-2"> 9 <div class="alert alert-warning"> 10 {{ session('media') }} 11 </div> 12 </div> 13 </div> 14 @endif 15@yield('content') 16 17<h1>編集内容確認</h1> 18 19 <table class="table table-striped"> 20 <tr> 21 <td>名前</td> 22 <td>{{$info['name']}}</td> 23 </tr> 24 <tr> 25 <td>E-Mail</td> 26 <td>{{$info['email']}}</td> 27 </tr> 28 <tr> 29 <td>年齢</td> 30 <td>{{$info['age']}}</td> 31 </tr> 32 <tr> 33 <td>エリア</td> 34 <td>{{$info['area']}}</td> 35 </tr> 36 <tr> 37 <td>性別</td> 38 <td>{{$info['gender']}}</td> 39 </tr> 40 <tr> 41 <td>メディア1</td> 42 <td>{{$info['media1']}}</td> 43 </tr> 44 <tr> 45 <td>メディア2</td> 46 <td>{{$info['media2']}}</td> 47 </tr> 48 <tr> 49 <td>ご意見</td> 50 <td>{{$info['note']}}</td> 51 </tr> 52 <tr> 53 <td>画像</td> 54 <td>{{$info['image']}}</td> 55 </tr> 56 </td> 57 </tr> 58 </table> 59 60 <form action="/article/edit_complete" method="post"> 61 {{ csrf_field() }} 62 <!--hidden --> 63 <input type="hidden" name="id" value="{{ $info['id'] }}"> 64 <input type="hidden" name="name" value="{{ $info['name'] }}"> 65 <input type="hidden" name="email" value="{{ $info['email'] }}"> 66 <input type="hidden" name="age" value="{{ $info['age'] }}"> 67 <input type="hidden" name="area" value="{{ $info['area'] }}"> 68 <input type="hidden" name="gender" value="{{ $info['gender'] }}"> 69 <input type="hidden" name="media1" value="{{ $info['media1'] }}"> 70 <input type="hidden" name="media2" value="{{ $info['media2'] }}"> 71 <input type="hidden" name="note" value="{{ $info['note'] }}"> 72 <input type="hidden" name="image" enctype="multipart/form-data" value="{{ $info['image'] }}"> 73 74 <input type="submit" value="編集実行" class="btn btn-primary"> 75 <br><br> 76 <a href="/article/list" class="btn btn-success" style="maerin:20px">フォームに戻る</a> 77 </form> 78@stop
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー