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

質問編集履歴

3

修正

2020/10/28 07:18

投稿

gomes_2222
gomes_2222

スコア97

title CHANGED
File without changes
body CHANGED
@@ -2,15 +2,16 @@
2
2
 
3
3
  phplaravelの勉強中です。
4
4
  PHPフレームワーク Laravel入門という本を購入して勉強してます。144ページのところでエラーです。
5
+ フォームにバリデーションに引っかかる不適切な情報を入力した場合に、バリデーションの情報を保持しつつindex.blade.phpにページが自動で飛ぶようにしたいです。(エラーメッセージを表示した状態のindex.blade.phpが表示されるようにしたい。)
5
6
 
6
7
  ### 発生している問題・エラーメッセージ
7
- フォームに、バリデーションに引っかかる不適切な情報を記入してフォームの送信ボタンを押すと、
8
+ フォームに、不適切な情報を記入してフォームの送信ボタンを押すと、
8
- エラーメッセージが表示されずに、「このサイトにアクセスできません localhost で接続が拒否されました。」という画面になってしまいます。
9
+ 「このサイトにアクセスできません localhost で接続が拒否されました。」という画面になってしまいます。
9
- 通常、プログラムのスペルミスなどであれば、それを指摘するエラー画面になるはずなのに、おかしいと思ってます。
10
10
 
11
+
11
12
  ### 該当のソースコード
12
-
13
- ```HelloController.php
13
+ HelloController.php
14
+ ```
14
15
  <?php
15
16
 
16
17
  namespace App\Http\Controllers;
@@ -41,8 +42,8 @@
41
42
  }
42
43
  }
43
44
  ```
44
-
45
- ```Hellorequests.php
45
+ Hellorequests.php
46
+ ```
46
47
  <?php
47
48
 
48
49
  namespace App\Http\Requests;
@@ -81,8 +82,8 @@
81
82
  }
82
83
 
83
84
  ```
84
-
85
- ```index.blade.php
85
+ index.blade.php
86
+ ```
86
87
  @extends('layouts.helloapp')
87
88
 
88
89
  @section('title', 'Index')
@@ -121,23 +122,13 @@
121
122
  @endsection
122
123
 
123
124
  ```
124
-
125
- ```web.php
125
+ web.php
126
+ ```
126
127
  <?php
127
128
 
128
129
  use Illuminate\Support\Facades\Route;
129
130
  use App\Http\Middleware\HelloMiddleware;
130
131
 
131
- /*
132
- |--------------------------------------------------------------------------
133
- | Web Routes
134
- |--------------------------------------------------------------------------
135
- |
136
- | Here is where you can register web routes for your application. These
137
- | routes are loaded by the RouteServiceProvider within a group which
138
- | contains the "web" middleware group. Now create something great!
139
- |
140
- */
141
132
 
142
133
  Route::get('/', function () {
143
134
  return view('welcome');
@@ -154,14 +145,14 @@
154
145
  apache server
155
146
  MySQL server
156
147
  共に正常に起動していることを確認しました。
157
- また、今回、参考書の通りにcontrollerを修正したところ、エラーとなりました。
158
148
  なお、バリデーションに引っかからないように入力してフォーム送信すると問題なくページは表示されます。
159
149
  わざとバリデーションに引っかかるように入力すると上記エラーとなり、ページを表示できません。
160
- なので、エラー表示にかかる部分に何か問題があるのかと思ってます。
150
+ なので、return view は問題なく機能しています、return redirect がうまく動作していないかと思ってます。
161
151
 
162
152
  PHP 7.4.1
163
153
  MySQL 5.7
164
154
  PHP laravel 8.7.1
155
+
165
156
  ### 試したこと
166
157
 
167
158
  インターネット接続については、問題なくできていることは確認しました。

2

修正

2020/10/28 07:18

投稿

gomes_2222
gomes_2222

スコア97

title CHANGED
File without changes
body CHANGED
@@ -161,6 +161,7 @@
161
161
 
162
162
  PHP 7.4.1
163
163
  MySQL 5.7
164
+ PHP laravel 8.7.1
164
165
  ### 試したこと
165
166
 
166
167
  インターネット接続については、問題なくできていることは確認しました。

1

修正

2020/10/28 07:04

投稿

gomes_2222
gomes_2222

スコア97

title CHANGED
File without changes
body CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  ### 該当のソースコード
12
12
 
13
- ```php
13
+ ```HelloController.php
14
14
  <?php
15
15
 
16
16
  namespace App\Http\Controllers;
@@ -42,6 +42,125 @@
42
42
  }
43
43
  ```
44
44
 
45
+ ```Hellorequests.php
46
+ <?php
47
+
48
+ namespace App\Http\Requests;
49
+
50
+ use Illuminate\Foundation\Http\FormRequest;
51
+
52
+ class HelloRequest extends FormRequest
53
+ {
54
+ public function authorize()
55
+ {
56
+ if ($this->path() == 'hello')
57
+ {
58
+ return true;
59
+ } else {
60
+ return false;
61
+ }
62
+ }
63
+ public function rules()
64
+ {
65
+ return [
66
+ 'name' => 'required',
67
+ 'mail' => 'email',
68
+ 'age' => 'numeric|between:0,150',
69
+ ];
70
+ }
71
+ public function messages()
72
+ {
73
+ return [
74
+ 'name.required' => '名前は必ず入力して下さい。',
75
+ 'mail.email' => 'メールアドレスが必要です。',
76
+ 'age.numeric' => '年齢を整数で記入下さい。',
77
+ 'age.between' => '年齢は0 ~ 150の間で入力下さい。',
78
+ 'age.hello' => 'Hello! 入力は偶数のみ受け付けます。',
79
+ ];
80
+ }
81
+ }
82
+
83
+ ```
84
+
85
+ ```index.blade.php
86
+ @extends('layouts.helloapp')
87
+
88
+ @section('title', 'Index')
89
+
90
+ @section('menubar')
91
+ @parent
92
+ インデックスページ
93
+ @endsection
94
+
95
+ @section('content')
96
+ <p>{{$msg}}</p>
97
+ @if (count($errors) > 0)
98
+ <p>入力に問題があります</p>
99
+ @endif
100
+ <form action="/hello" method="post">
101
+ <table>
102
+ @csrf
103
+ @error('name')
104
+ <tr><th>ERROR</th><td>{{$message}}</td></tr>
105
+ @enderror
106
+ <tr><th>name: </th><td><input type="text" name="name" value="{{old('name')}}"></td></tr>
107
+ @error('mail')
108
+ <tr><th>ERROR</th><td>{{$message}}</td></tr>
109
+ @enderror
110
+ <tr><th>mail: </th><td><input type="text" name="mail" value="{{old('mail')}}"></td></tr>
111
+ @error('age'))
112
+ <tr><th>ERROR</th><td>{{$message}}</td></tr>
113
+ @enderror
114
+ <tr><th>age: </th><td><input type="text" name="age" value="{{old('age')}}"></td></tr>
115
+ <tr><th></th><td><input type="submit" value="send"></td></tr>
116
+ </table>
117
+ </form>
118
+ @endsection
119
+ @section('footer')
120
+ copyright 2020 tuyano.
121
+ @endsection
122
+
123
+ ```
124
+
125
+ ```web.php
126
+ <?php
127
+
128
+ use Illuminate\Support\Facades\Route;
129
+ use App\Http\Middleware\HelloMiddleware;
130
+
131
+ /*
132
+ |--------------------------------------------------------------------------
133
+ | Web Routes
134
+ |--------------------------------------------------------------------------
135
+ |
136
+ | Here is where you can register web routes for your application. These
137
+ | routes are loaded by the RouteServiceProvider within a group which
138
+ | contains the "web" middleware group. Now create something great!
139
+ |
140
+ */
141
+
142
+ Route::get('/', function () {
143
+ return view('welcome');
144
+ });
145
+
146
+
147
+ Route::get('hello','App\Http\Controllers\HelloController@index');
148
+
149
+ Route::post('hello','App\Http\Controllers\HelloController@post');
150
+
151
+ ```
152
+ ### 環境
153
+ MAMPを使っています。
154
+ apache server
155
+ MySQL server
156
+ 共に正常に起動していることを確認しました。
157
+ また、今回、参考書の通りにcontrollerを修正したところ、エラーとなりました。
158
+ なお、バリデーションに引っかからないように入力してフォーム送信すると問題なくページは表示されます。
159
+ わざとバリデーションに引っかかるように入力すると上記エラーとなり、ページを表示できません。
160
+ なので、エラー表示にかかる部分に何か問題があるのかと思ってます。
161
+
162
+ PHP 7.4.1
163
+ MySQL 5.7
45
164
  ### 試したこと
46
165
 
47
166
  インターネット接続については、問題なくできていることは確認しました。