回答編集履歴

1

コメントを受けて追記。。

2019/01/18 09:45

投稿

mix-peach
mix-peach

スコア1910

test CHANGED
@@ -1,6 +1,4 @@
1
- 今のコードだけ見ると、戻るボタンはtype=submitで
2
-
3
- ```<form action="{{ route('edit_myprof_confirm') }}" method="post">```
1
+ 今のコードだけ見ると、戻るボタンはtype=submitで```<form action="{{ route('edit_myprof_confirm') }}" method="post">```
4
2
 
5
3
  の中に居るので、仮にrequiredを外したところで戻れなさそうに見えますね・・・?
6
4
 
@@ -29,3 +27,85 @@
29
27
  view側のrequiredもいいのですが、コントローラー側での入力チェックも大切です。
30
28
 
31
29
  勝手にrequiredを削除して送信するような、悪意あるユーザが現れるかもしれませんしね^^;
30
+
31
+
32
+
33
+ ---
34
+
35
+
36
+
37
+ コメント見ましたので、追記いたします。
38
+
39
+
40
+
41
+ 仮に画面に下記の4つがあるとして、
42
+
43
+
44
+
45
+ 1.マイプロフィール
46
+
47
+ 2.マイプロフィール編集:入力(戻るボタン・進むボタン)
48
+
49
+ 3.マイプロフィール編集:確認(戻るボタン・進むボタン)
50
+
51
+ 4.マイプロフィール編集:完了
52
+
53
+
54
+
55
+ コントローラーの中で分岐、・・ということは、例えば
56
+
57
+ 2の画面上で戻るボタンを押した場合、3の処理で、action=backなら1にリダイレクトさせている・・という感じなのでしょうか?
58
+
59
+
60
+
61
+ 先ほど調べていて見つけたのですが、requiredは、button=submitを押したときにしか、チェックされないようなので(私も今日知りました・・^^;回答しておきながらすみません・・)、
62
+
63
+ 一番早い解決方法は、やはり戻るボタンは、type=buttonに変更して、onclickに```$(this).parents('form').submit();```とか書いてしまう方法かもです。。。(jqueryが使えないなら、formに名前でもつけてjavascriptで)
64
+
65
+
66
+
67
+ この場合、actionには値がPOSTされませんので、それを分岐の条件にすれば良いかなと。
68
+
69
+ (あくまで一番早い解決策であって、良い策とは言いませんが)
70
+
71
+
72
+
73
+ =========================================================
74
+
75
+
76
+
77
+ > 確認画面→完了画面の際は、戻るもsubmitでないとold inputを取得できない
78
+
79
+
80
+
81
+ こういう実装方法を取ったことが無いので、どういう状況からそう判断されたのか分かりませんが、
82
+
83
+ 明示的にリダイレクトさせた先で、渡された値も引き継ぎたい場合は、そうできるように指定してリダイレクトさせるのが正しいと思います。(ボタンが変わっただけで取得できないのでは困るので)
84
+
85
+
86
+
87
+ ```php
88
+
89
+ return redirect('リダイレクト先')->withInput();
90
+
91
+ ```
92
+
93
+
94
+
95
+ そもそものお話をすると、(私の考えですが、)
96
+
97
+ 「入力画面」の「戻る」機能は、「戻りたいURLへのリンク」で充分だと思いますし、
98
+
99
+ 「確認画面」から「入力画面」へ「戻る」時も、一度「完了画面にPOSTしてから入力画面にリダイレクト」ではなく、直接「入力画面にPOSTする」方が単純で簡潔ですよね?
100
+
101
+
102
+
103
+ 今の状態は、どうにもボタン部分をcomponentで使いたいがゆえに、プログラム側が複雑になってしまっているようにしか見えないので、本末転倒というかなんというか・・・といった印象です^^;
104
+
105
+
106
+
107
+ > 「どこからどこまでをコンポーネント化し、処理をどう分けるか」
108
+
109
+
110
+
111
+ は、「それによってプログラム側が複雑化しない」ことも、判断材料のひとつにすると良いかもしれません。