teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

8

ご提示いただいた内容をもとに編集を行いしました。

2017/12/08 03:49

投稿

hidepon
hidepon

スコア206

title CHANGED
File without changes
body CHANGED
@@ -119,4 +119,85 @@
119
119
  宜しくお願いいたします
120
120
 
121
121
  (追記2)
122
- ご回答内容を反映しました。
122
+ ご回答内容を反映しました。
123
+
124
+
125
+
126
+
127
+ (現在の状況)
128
+ routes/web.php
129
+ ```
130
+ Route::get('/', 'UploadController@index');
131
+ Route::post('/add', 'UploadController@add');
132
+ ```
133
+
134
+ app/Http/Controllers/UploadController.php
135
+ ```
136
+ ?php
137
+
138
+ namespace App\Http\Controllers;
139
+
140
+ use Illuminate\Http\Request;
141
+
142
+ class UploadController extends Controller
143
+ {
144
+ //view
145
+ public function index()
146
+ {
147
+ return view('index');
148
+ }
149
+
150
+ //postした後の処理
151
+ public function add(Request $request)
152
+ {
153
+ $this->validate($request, [
154
+ 'file' => 'image|max:3000',
155
+ ]);
156
+
157
+ if ($request->file('file')->isValid())
158
+ {
159
+ //アップロード成功時の処理
160
+ return view('upload_success');
161
+ }
162
+ }
163
+ }
164
+ ```
165
+ resource/view/index.blade.php
166
+ ```
167
+ <!DOCTYPE html>
168
+ <html>
169
+ <head>
170
+ <title>sample</title>
171
+ <meta charset="utf-8">
172
+ </head>
173
+ <body>
174
+
175
+ <!-- エラーメッセージ表示部分-->
176
+ @if ($errors->any())
177
+ @foreach ($errors->all() as $error)
178
+ <p>{{ $error }}</p>
179
+ @endforeach
180
+ @endif
181
+ <!-- エラーメッセージ表示部分-->
182
+
183
+ <form action="/add" method="post" enctype="multipart/form-data">
184
+ {{ csrf_field() }}
185
+ <input type="file" name="file">
186
+ <input type="submit">
187
+ </form>
188
+ </body>
189
+ </html>
190
+ ```
191
+ resource/view/upload_success.blade.php
192
+ ```
193
+ <!DOCTYPE html>
194
+ <html>
195
+ <head>
196
+ <title>sample</title>
197
+ <meta charset="utf-8">
198
+ </head>
199
+ <body>
200
+ <p>アップロード成功しました</p>
201
+ </body>
202
+ </html>
203
+ ```

7

Controller部分を最新状態に更新しました

2017/12/08 03:49

投稿

hidepon
hidepon

スコア206

title CHANGED
File without changes
body CHANGED
@@ -26,18 +26,19 @@
26
26
 
27
27
  public function store(Request $request)
28
28
  {
29
- // バリデーションルール
30
29
  $this->validate($request, [
31
- 'file' => 'image|max:3000',
30
+ 'datafile' => 'image|max:3000',
32
31
  ]);
33
- if ($request->file('datafile')->isValid()){
32
+ if ($request->file('datafile')->isValid())
33
+ {
34
34
  //アップロード成功時の処理
35
35
  return view('upload_success');
36
36
  }else{
37
- //失敗時の処理(エラーメッセージをviewに入れる)
37
+ //失敗時の処理
38
38
  return view('upload_error');
39
39
  }
40
40
  }
41
+ }
41
42
  ```
42
43
 
43
44
  resource/view/uploads.blade.php

6

スペルミスがありました

2017/12/07 09:58

投稿

hidepon
hidepon

スコア206

title CHANGED
File without changes
body CHANGED
@@ -30,7 +30,7 @@
30
30
  $this->validate($request, [
31
31
  'file' => 'image|max:3000',
32
32
  ]);
33
- if ($request->file('adtafile')->isValid()){
33
+ if ($request->file('datafile')->isValid()){
34
34
  //アップロード成功時の処理
35
35
  return view('upload_success');
36
36
  }else{

5

コメントの消し忘れがありました

2017/12/07 09:03

投稿

hidepon
hidepon

スコア206

title CHANGED
File without changes
body CHANGED
@@ -35,7 +35,7 @@
35
35
  return view('upload_success');
36
36
  }else{
37
37
  //失敗時の処理(エラーメッセージをviewに入れる)
38
- // return view('upload_error');
38
+ return view('upload_error');
39
39
  }
40
40
  }
41
41
  ```

4

現状のソースを記述しました。

2017/12/07 08:52

投稿

hidepon
hidepon

スコア206

title CHANGED
File without changes
body CHANGED
@@ -30,15 +30,16 @@
30
30
  $this->validate($request, [
31
31
  'file' => 'image|max:3000',
32
32
  ]);
33
- if ($request->file('file')->isValid()){
33
+ if ($request->file('adtafile')->isValid()){
34
34
  //アップロード成功時の処理
35
- return redirect('/')->with('message', '成功しました');
35
+ return view('upload_success');
36
36
  }else{
37
37
  //失敗時の処理(エラーメッセージをviewに入れる)
38
- // return redirect('/')->with('message', 'ファイルを確認してください!');
38
+ // return view('upload_error');
39
39
  }
40
40
  }
41
41
  ```
42
+
42
43
  resource/view/uploads.blade.php
43
44
  ```
44
45
  @if (isset($message))
@@ -64,6 +65,39 @@
64
65
  </div>
65
66
  @endsection
66
67
  ```
68
+ エラー発生
69
+ resource/view/upload_error
70
+ ```
71
+ @section('content')
72
+ <div class="container">
73
+ @if (count($errors) > 0)
74
+ <div class="alert alert-danger">
75
+ <ul>
76
+ @foreach ($errors->all() as $error)
77
+ <li>{{ $error }}</li>
78
+ @endforeach
79
+ </ul>
80
+ </div>
81
+ @endif
82
+ <form action="/store" method="post" enctype="multipart/form-data">
83
+ <input type="file" name="datafile">
84
+ <input type="submit" value="アップロード" />
85
+ {{ csrf_field() }}
86
+ </form>
87
+ </div>
88
+ @endsection
89
+ ```
90
+ 成功時
91
+ resource/view/upload_success
92
+ ```
93
+ @section('content')
94
+ <div class="container">
95
+ <p>アップロードが成功しました。
96
+ </div>
97
+ @endsection
98
+ ```
99
+
100
+
67
101
  エラー処理時の方法が分からず困っています。
68
102
  宜しくお願いいたします。
69
103
  (追記)

3

viewの記述ミスがありました

2017/12/07 08:51

投稿

hidepon
hidepon

スコア206

title CHANGED
File without changes
body CHANGED
@@ -41,6 +41,15 @@
41
41
  ```
42
42
  resource/view/uploads.blade.php
43
43
  ```
44
+ @if (isset($message))
45
+ <div class="alert">{{$message}}</div>
46
+ @endif
47
+
48
+ <form action="/store" method="post" enctype="multipart/form-data">
49
+ <input type="file" name="datafile">
50
+ <input type="submit" value="アップロード" />
51
+ {{ csrf_field() }}
52
+ </form>
44
53
  @section('content')
45
54
  <div class="container">
46
55
  @if (count($errors) > 0)
@@ -54,20 +63,6 @@
54
63
  @endif
55
64
  </div>
56
65
  @endsection
57
- <form action="{{url('/send')}}" method="post">
58
- {{ csrf_field() }}
59
- <div class="form-group">
60
- <label>Name</label>
61
- <input type="text" class="form-control" name="name" value="{{old('name')}}" placeholder="name">
62
- </div>
63
- <div class="form-group">
64
- <label>Level</label>
65
- <input type="text" class="form-control" name="level" value="{{old('level')}}" placeholder="level">
66
- </div>
67
- <input type="submit" value="submit">
68
- </form>
69
- </div>
70
- @endsection
71
66
  ```
72
67
  エラー処理時の方法が分からず困っています。
73
68
  宜しくお願いいたします。

2

ご回答頂いた内容を反映しました

2017/12/07 08:26

投稿

hidepon
hidepon

スコア206

title CHANGED
File without changes
body CHANGED
@@ -6,15 +6,19 @@
6
6
  Auth::routes();
7
7
  Route::get('/home', 'HomeController@index')->name('home');
8
8
  Route::get('/', 'UploadController@index');
9
- Route::post('/store', [
10
- 'as' => 'store', 'uses' => 'UploadController@store'
9
+ Route::post('/store', 'UploadController@store');
11
- ]);
12
10
  ```
13
11
  app/Http/Controllers/UploadController.php
14
12
  ```
13
+ <?php
14
+
15
15
  namespace App\Http\Controllers;
16
+
16
17
  use Illuminate\Http\Request;
18
+
17
19
  class UploadController extends Controller
20
+ {
21
+
18
22
  public function index(Request $request)
19
23
  {
20
24
  return view('uploads');
@@ -25,10 +29,15 @@
25
29
  // バリデーションルール
26
30
  $this->validate($request, [
27
31
  'file' => 'image|max:3000',
28
- ]);;
32
+ ]);
33
+ if ($request->file('file')->isValid()){
34
+ //アップロード成功時の処理
29
- return redirect('/')->with('message', 'ファイルをアップロードしました');
35
+ return redirect('/')->with('message', '成功しました');
36
+ }else{
37
+ //失敗時の処理(エラーメッセージをviewに入れる)
38
+ // return redirect('/')->with('message', 'ファイルを確認してください!');
39
+ }
30
40
  }
31
- }
32
41
  ```
33
42
  resource/view/uploads.blade.php
34
43
  ```
@@ -77,4 +86,7 @@
77
86
  }
78
87
  としていました。
79
88
  このような仕組みってできるんでしょうか?
80
- 宜しくお願いいたします
89
+ 宜しくお願いいたします
90
+
91
+ (追記2)
92
+ ご回答内容を反映しました。

1

実現したいことを記述しました

2017/12/07 08:11

投稿

hidepon
hidepon

スコア206

title CHANGED
File without changes
body CHANGED
@@ -61,4 +61,20 @@
61
61
  @endsection
62
62
  ```
63
63
  エラー処理時の方法が分からず困っています。
64
- 宜しくお願いいたします。
64
+ 宜しくお願いいたします。
65
+ (追記)
66
+ できれば、ほかのフレームワークでやっていたようなことができればうれしいんですが、、、、
67
+ /store
68
+ に遷移した段階でエラーがあればエラーメッセージとファイル選択のフォームを再度表示。
69
+ ファイルが送信されていれば、保存ということをしたいです。
70
+
71
+ 公式ドキュメントではこのような内容が読み取れず、できるのか判断出来ない状況です。
72
+ ちなみにほかのフレームワークでは
73
+ if (エラーあり){
74
+ view(エラーのテンプレート);
75
+ }else{
76
+ view(成功のテンプレート);
77
+ }
78
+ としていました。
79
+ このような仕組みってできるんでしょうか?
80
+ 宜しくお願いいたします