質問編集履歴

5

追記

2023/03/16 11:56

投稿

goola
goola

スコア62

test CHANGED
File without changes
test CHANGED
@@ -275,3 +275,9 @@
275
275
  多くの場合、新規登録⇨すぐさま削除ができています。
276
276
  最初は「勘違いかな?」と思ったのですが、何度かやってるとたまに再現します。
277
277
 
278
+ 追記4)
279
+ 再現する条件がわかりました。
280
+ 登録⇨瞬く間に削除すると失敗します。
281
+ 登録⇨5、6秒の一呼吸をおくと削除できます。
282
+ なぜでしょうう?
283
+ Laravel Framework 10.1.5 です。

4

追記

2023/03/16 11:38

投稿

goola
goola

スコア62

test CHANGED
File without changes
test CHANGED
@@ -269,3 +269,9 @@
269
269
  }
270
270
  }
271
271
  ```
272
+
273
+ 追記3)
274
+ 必ず再現するワケではありません。
275
+ 多くの場合、新規登録⇨すぐさま削除ができています。
276
+ 最初は「勘違いかな?」と思ったのですが、何度かやってるとたまに再現します。
277
+

3

追記

2023/03/16 11:33

投稿

goola
goola

スコア62

test CHANGED
File without changes
test CHANGED
@@ -40,3 +40,232 @@
40
40
  追記1)
41
41
  新規登録⇨すぐさま削除のときだけ削除できないようです。
42
42
  登録⇨一度画面を閉じる⇨削除は問題なかったです。
43
+
44
+ 追記2)
45
+ ```index.blade.php
46
+ <!DOCTYPE html>
47
+ <html lang="ja">
48
+ <head>
49
+ <meta charset="UTF-8">
50
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
51
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
52
+ <title>アドレス帳</title>
53
+ <link rel='stylesheet' href="{{ asset('css/address/styles.css') }}">
54
+ <link rel='icon' href="{{ asset('img/favicon.ico') }}" id='favicon'>
55
+ </head>
56
+ <body>
57
+ <header>
58
+ <img src='../../img/home.png' onclick="location.href='../index.php'" width='32' height='32'>
59
+ </header>
60
+ <table>
61
+ <div class="container">
62
+ <h1 class="title">アドレス帳</h1>
63
+ {{-- <button class="add" onclick="window.location='{{ route('address.create') }}'">新規追加</button> --}}
64
+ <input type='button' class='add' value='新規追加' onclick="window.location='{{ route('address.create') }}'">
65
+ </div>
66
+ </h1>
67
+ <tr>
68
+ <th>削除</th>
69
+ <th>修正</th>
70
+ <th>性</th>
71
+ <th>名</th>
72
+ <th>セイ</th>
73
+ <th>メイ</th>
74
+ <th>電話番号</th>
75
+ <th>郵便番号</th>
76
+ <th>住所</th>
77
+ </tr>
78
+ @foreach ($addresses as $address)
79
+ <tr>
80
+ <form>
81
+ @method('DELETE')
82
+ @csrf
83
+ <td width='75'><button onclick="window.location='{{ route('address.destroy', $address) }}'">削除</button></td>
84
+ </form>
85
+ <td width='75'><button onclick="window.location='{{ route('address.edit', $address) }}'">修正</button></td>
86
+ <td width='100' class="table_content">{{ $address->kanji_sei }}</td>
87
+ <td width='100' class="table_content">{{ $address->kanji_mei }}</td>
88
+ <td width='150' class="table_content">{{ $address->kana_sei }}</td>
89
+ <td width='150' class="table_content">{{ $address->kana_mei }}</td>
90
+ <td width='120' class="table_content">{{ $address->tel }}</td>
91
+ <td width='100' class="table_content">{{ $address->zipcode }}</td>
92
+ <td class="table_content">{{ $address->address1 . $address->address2 }}</td>
93
+ </tr>
94
+ @endforeach
95
+ </table>
96
+ </body>
97
+ </html>
98
+ ```
99
+ ```create.blade.php
100
+ <!DOCTYPE html>
101
+ <html lang="ja">
102
+ <head>
103
+ <meta charset="UTF-8">
104
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
105
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
106
+ <link rel='stylesheet' href="{{ asset('css/address/create.css') }}">
107
+ <link rel='icon' href="{{ asset('img/favicon.ico') }}" id='favicon'>
108
+ <title>アドレス帳 - 作成</title>
109
+ </head>
110
+ <body>
111
+ <header>
112
+ <img src='../../img/home.png' onclick="location.href='../index.php'" width='32' height='32'>
113
+ </header>
114
+ <form method='POST' action="{{ route('address.store') }}">
115
+ @csrf
116
+
117
+ <div class='containar'>
118
+ <h1>アドレス帳 - 作成</h1>
119
+
120
+ <div class='entry'>
121
+ <div class='sei'>
122
+ <label>姓</label><span class='required'>【必須】</span><br>
123
+ <input type=text name='kanji_sei' tabindex='1' value="{{ old('kanji_sei') }}"><br>
124
+ @error('kanji_sei')
125
+ <div class='error'>{{ $message }}</div>
126
+ @enderror
127
+ <label>セイ</label><span class='required'>【必須】</span><br>
128
+ <input type=text name='kana_sei' tabindex='3' value="{{ old('kana_sei') }}"><br>
129
+ @error('kana_sei')
130
+ <div class='error'>{{ $message }}</div>
131
+ @enderror
132
+ </div>
133
+ <div class='mei'>
134
+ <label>名</label><span class='required'>【必須】</span><br>
135
+ <input type=text name='kanji_mei' tabindex='2' value="{{ old('kanji_mei') }}"><br>
136
+ @error('kanji_mei')
137
+ <div class='error'>{{ $message }}</div>
138
+ @enderror
139
+ <label>メイ</label><span class='required'>【必須】</span><br>
140
+ <input type=text name='kana_mei' tabindex='4' value="{{ old('kana_mei') }}"><br>
141
+ @error('kana_mei')
142
+ <div class='error'>{{ $message }}</div>
143
+ @enderror
144
+ </div>
145
+ </div>
146
+ <label>電話番号</label><span class='required'>【必須】</span><br>
147
+ <input type=text name='tel' value="{{ old('tel') }}"><span class='comment'>ハイフン不要です</span><br>
148
+ @error('tel')
149
+ <div class='error'>{{ $message }}</div>
150
+ @enderror
151
+ <label>郵便番号</label><span class='required'>【必須】</span><br>
152
+ {{-- <input type=text name='zipcode' value="{{ old('zipcode') }}"><br> --}}
153
+ <input type="text" name="zipcode" value="{{ old('zipcode') }}" onKeyUp="AjaxZip3.zip2addr(this,'','address1','address1');"><span class='comment'>ハイフン不要です</span><br>
154
+ @error('zipcode')
155
+ <div class='error'>{{ $message }}</div>
156
+ @enderror
157
+ <label>市区町村</label><span class='required'>【必須】</span><br>
158
+ {{-- <input type=text name='address1' value="{{ old('address1') }}"><br> --}}
159
+ <input type="text" name="address1" class='address' value="{{ old('address1') }}"><br>
160
+ @error('address1')
161
+ <div class='error'>{{ $message }}</div>
162
+ @enderror
163
+ <label>番地(アパート名など)</label><span class='required'>【必須】</span><br>
164
+ <input type=text name='address2' class='address' value="{{ old('address2') }}"><br>
165
+ @error('address2')
166
+ <div class='error'>{{ $message }}</div>
167
+ @enderror
168
+
169
+ <input type='submit' value='登録'>
170
+ <input type='reset' value='リセット'>
171
+ </div>
172
+ </form>
173
+ <script src="https://ajaxzip3.github.io/ajaxzip3.js" charset="UTF-8"></script>
174
+ </body>
175
+ </html>
176
+ ```
177
+ ```AddressController.php
178
+ <?php
179
+
180
+ namespace App\Http\Controllers;
181
+
182
+ use Illuminate\Http\Request;
183
+ use App\Models\Address;
184
+
185
+ class AddressController extends Controller
186
+ {
187
+ public function index()
188
+ {
189
+ $addresses = Address::latest()->get();
190
+
191
+ return view('address.index')
192
+ ->with(['addresses' => $addresses]);
193
+ }
194
+
195
+ public function create()
196
+ {
197
+ return view('address.create');
198
+ }
199
+
200
+ public function store(Request $request)
201
+ {
202
+
203
+ $request->validate([
204
+ 'kanji_sei' => 'required|max:20',
205
+ 'kanji_mei' => 'required|max:20',
206
+ 'kana_sei' => 'required|max:20',
207
+ 'kana_mei' => 'required|max:20',
208
+ 'tel' => 'required|max:11',
209
+ 'zipcode' => 'required|max:7',
210
+ 'address1' => 'required|max:255',
211
+ 'address2' => 'required|max:255',
212
+ ]);
213
+
214
+ $address = new Address();
215
+ $address->kanji_sei = $request->kanji_sei;
216
+ $address->kanji_mei = $request->kanji_mei;
217
+ $address->kana_sei = $request->kana_sei;
218
+ $address->kana_mei = $request->kana_mei;
219
+ $address->tel = $request->tel;
220
+ $address->zipcode = $request->zipcode;
221
+ $address->address1 = $request->address1;
222
+ $address->address2 = $request->address2;
223
+ $address->save();
224
+
225
+ return redirect()
226
+ ->route('address.index');
227
+ }
228
+
229
+ public function update(Request $request, Address $address)
230
+ {
231
+
232
+ $request->validate([
233
+ 'kanji_sei' => 'required|max:20',
234
+ 'kanji_mei' => 'required|max:20',
235
+ 'kana_sei' => 'required|max:20',
236
+ 'kana_mei' => 'required|max:20',
237
+ 'tel' => 'required|max:11',
238
+ 'zipcode' => 'required|max:7',
239
+ 'address1' => 'required|max:255',
240
+ 'address2' => 'required|max:255',
241
+ ]);
242
+
243
+ $address->kanji_sei = $request->kanji_sei;
244
+ $address->kanji_mei = $request->kanji_mei;
245
+ $address->kana_sei = $request->kana_sei;
246
+ $address->kana_mei = $request->kana_mei;
247
+ $address->tel = $request->tel;
248
+ $address->zipcode = $request->zipcode;
249
+ $address->address1 = $request->address1;
250
+ $address->address2 = $request->address2;
251
+ $address->save();
252
+
253
+ return redirect()
254
+ ->route('address.index');
255
+ }
256
+
257
+ public function edit(Address $address)
258
+ {
259
+ return view('address.edit')
260
+ ->with(['address' => $address]);
261
+ }
262
+
263
+ public function destroy(Address $address)
264
+ {
265
+ $address->delete();
266
+
267
+ return redirect()
268
+ ->route('address.index');
269
+ }
270
+ }
271
+ ```

2

課題の追加

2023/03/16 11:24

投稿

goola
goola

スコア62

test CHANGED
File without changes
test CHANGED
@@ -34,7 +34,7 @@
34
34
  Route::delete('/address/{address}/destroy', [AddressController::class, 'destroy'])
35
35
  ->name('address.destroy');
36
36
  ```
37
-
37
+ できれば、登録→すぐに削除ができるとありがたいです。
38
38
  見当違いの質問であったら申し訳ありません。
39
39
 
40
40
  追記1)

1

追記

2023/03/16 07:02

投稿

goola
goola

スコア62

test CHANGED
File without changes
test CHANGED
@@ -37,3 +37,6 @@
37
37
 
38
38
  見当違いの質問であったら申し訳ありません。
39
39
 
40
+ 追記1)
41
+ 新規登録⇨すぐさま削除のときだけ削除できないようです。
42
+ 登録⇨一度画面を閉じる⇨削除は問題なかったです。