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

回答編集履歴

8

冗長

2019/01/24 10:38

投稿

mpyw
mpyw

スコア5223

answer CHANGED
@@ -18,7 +18,7 @@
18
18
  {
19
19
  if ($request->action === '確定') {
20
20
  Client::make($request->only('name', 'body'))
21
- ->fill(['month' => implode(', ', (array)($request->months ?? []))])
21
+ ->fill(['month' => implode(', ', $request->months ?? [])])
22
22
  ->save();
23
23
  return redirect('/client/list');
24
24
  }
@@ -66,7 +66,7 @@
66
66
  {{ csrf_field() }}
67
67
 
68
68
  {!! Form::hidden('name', $request->name) !!}
69
- @foreach ((array)($request->months ?? []) as $key => $value)
69
+ @foreach ($request->months ?? [] as $key => $value)
70
70
  {!! Form::hidden("months[$key]", $value) !!} <!-- ← ここで配列にしていなかったのが根本的な原因 -->
71
71
  @endforeach
72
72
  {!! Form::hidden('body', $request->body) !!}
@@ -75,7 +75,7 @@
75
75
 
76
76
  <ul>
77
77
  <li>{{ $request->name }}</li>
78
- <li>{{ implode(', ', (array)($request->months ?? [])) }}</li>
78
+ <li>{{ implode(', ', $request->months ?? []) }}</li>
79
79
  <li>{!! nl2br(e($request->body)) !!}</li>
80
80
  </ul>
81
81
 

7

修正

2019/01/24 10:38

投稿

mpyw
mpyw

スコア5223

answer CHANGED
@@ -18,7 +18,7 @@
18
18
  {
19
19
  if ($request->action === '確定') {
20
20
  Client::make($request->only('name', 'body'))
21
- ->fill(['month' => implode(', ', (array)$months)])
21
+ ->fill(['month' => implode(', ', (array)($request->months ?? []))])
22
22
  ->save();
23
23
  return redirect('/client/list');
24
24
  }

6

修正&リファクタ

2019/01/24 10:36

投稿

mpyw
mpyw

スコア5223

answer CHANGED
@@ -10,7 +10,7 @@
10
10
  public function confirm(ClientRequest $request)
11
11
  {
12
12
  return view('client.confirm')
13
- ->with($request->only('name', 'body', 'months'));
13
+ ->with(compact('request'));
14
14
  }
15
15
 
16
16
  //追加の処理
@@ -65,18 +65,18 @@
65
65
  <form class="" action="{{ url('/client') }}" method="post">
66
66
  {{ csrf_field() }}
67
67
 
68
- {!! Form::hidden('name', $name) !!}
68
+ {!! Form::hidden('name', $request->name) !!}
69
- @foreach ((array)$months as $key => $value)
69
+ @foreach ((array)($request->months ?? []) as $key => $value)
70
70
  {!! Form::hidden("months[$key]", $value) !!} <!-- ← ここで配列にしていなかったのが根本的な原因 -->
71
71
  @endforeach
72
- {!! Form::hidden('body', $body) !!}
72
+ {!! Form::hidden('body', $request->body) !!}
73
73
 
74
74
  この内容で登録します。
75
75
 
76
76
  <ul>
77
- <li>{{ $name }}</li>
77
+ <li>{{ $request->name }}</li>
78
- <li>{{ implode(', ', (array)$months) }}</li>
78
+ <li>{{ implode(', ', (array)($request->months ?? [])) }}</li>
79
- <li>{!! nl2br(e($body)) !!}</li>
79
+ <li>{!! nl2br(e($request->body)) !!}</li>
80
80
  </ul>
81
81
 
82
82
  <input type="submit" name="action" value="戻る">

5

修正

2019/01/24 10:34

投稿

mpyw
mpyw

スコア5223

answer CHANGED
@@ -17,7 +17,7 @@
17
17
  public function store(ClientRequest $request)
18
18
  {
19
19
  if ($request->action === '確定') {
20
- Client::make($request->only('name', 'body')
20
+ Client::make($request->only('name', 'body'))
21
21
  ->fill(['month' => implode(', ', (array)$months)])
22
22
  ->save();
23
23
  return redirect('/client/list');

4

修正

2019/01/24 10:23

投稿

mpyw
mpyw

スコア5223

answer CHANGED
@@ -17,7 +17,9 @@
17
17
  public function store(ClientRequest $request)
18
18
  {
19
19
  if ($request->action === '確定') {
20
- Client::create($request->only('name', 'month', 'body'));
20
+ Client::make($request->only('name', 'body')
21
+ ->fill(['month' => implode(', ', (array)$months)])
22
+ ->save();
21
23
  return redirect('/client/list');
22
24
  }
23
25
 

3

修正

2019/01/24 10:22

投稿

mpyw
mpyw

スコア5223

answer CHANGED
@@ -1,34 +1,84 @@
1
- この機能使ったことなくてエアプ回答ですが…
2
-
3
1
  ```
4
- @foreach($month as $key => $value)
5
- <label class="checkbox-inline">
6
- {!! Form::checkbox('month[]', $value, old("month.$key")) !!}
7
- {{ $value }}
8
- </label>
2
+ // 追加ページ
9
- @endforeach
3
+ public function create()
10
- ```
4
+ {
5
+ // 配列が入っているなら Client::$month も Client::$months の複数形にしたほうが混乱が少ないかも
6
+ return view('client.create', ['months' => Client::$month]);
7
+ }
11
8
 
12
- でどうですか?
9
+ // 追加の確認
10
+ public function confirm(ClientRequest $request)
11
+ {
12
+ return view('client.confirm')
13
+ ->with($request->only('name', 'body', 'months'));
14
+ }
13
15
 
16
+ //追加の処理
17
+ public function store(ClientRequest $request)
14
- ----
18
+ {
19
+ if ($request->action === '確定') {
20
+ Client::create($request->only('name', 'month', 'body'));
21
+ return redirect('/client/list');
22
+ }
15
23
 
24
+ return redirect('/client/create')
25
+ ->withInput($request->except('action'));
26
+ }
16
- ## 追記
27
+ ```
17
28
 
18
- ```php
19
- public function confirm(ClientRequest $request)
20
- {
21
- return view('client.confirm')->with($request->only('month', 'ClientName', 'ClientBody'));
22
- }
23
29
  ```
30
+ <form class="" action="{{ url('/client/confirm') }}" method="post">
31
+ {{ csrf_field() }}
24
32
 
33
+ <p>
34
+ {!! Form::text('name', old('name'), ['placeholder' => '名前']) !!}
35
+ @if ($errors->has('name'))
36
+ <span class="error">{{ $errors->first('name') }}</span>
25
- ```php
37
+ @endif
38
+ </p>
39
+
40
+ <p>
26
- @foreach($month as $key => $value)
41
+ @foreach ($months as $key => $value)
27
42
  <label class="checkbox-inline">
28
- {!! Form::checkbox("month[$key]", $value, old("month.$key")) !!}
43
+ {!! Form::checkbox("months[$key]", $value, old("months.$key")) !!}
29
44
  {{ $value }}
30
45
  </label>
31
46
  @endforeach
47
+ </p>
48
+
49
+ <p>
50
+ {!! Form::textarea('body', old('body'), [
51
+ 'rows' => 8, 'cols' => 80, 'placeholder' => '本文',
52
+ ]) !!}
53
+ @if ($errors->has('body'))
54
+ <span class="error">{{ $errors->first('body') }}</span>
55
+ @endif
56
+ </p>
57
+
58
+ <input type="submit" value="登録">
59
+ </form>
32
60
  ```
33
61
 
62
+ ```
63
+ <form class="" action="{{ url('/client') }}" method="post">
64
+ {{ csrf_field() }}
65
+
66
+ {!! Form::hidden('name', $name) !!}
67
+ @foreach ((array)$months as $key => $value)
68
+ {!! Form::hidden("months[$key]", $value) !!} <!-- ← ここで配列にしていなかったのが根本的な原因 -->
69
+ @endforeach
70
+ {!! Form::hidden('body', $body) !!}
71
+
34
- お試ください
72
+ の内容登録ます。
73
+
74
+ <ul>
75
+ <li>{{ $name }}</li>
76
+ <li>{{ implode(', ', (array)$months) }}</li>
77
+ <li>{!! nl2br(e($body)) !!}</li>
78
+ </ul>
79
+
80
+ <input type="submit" name="action" value="戻る">
81
+ <input type="submit" name="action" value="確定">
82
+
83
+ </form>
84
+ ```

2

only を追加

2019/01/24 10:21

投稿

mpyw
mpyw

スコア5223

answer CHANGED
@@ -18,7 +18,7 @@
18
18
  ```php
19
19
  public function confirm(ClientRequest $request)
20
20
  {
21
- return view('client.confirm')->with($request->only('month'));
21
+ return view('client.confirm')->with($request->only('month', 'ClientName', 'ClientBody'));
22
22
  }
23
23
  ```
24
24
 

1

追記

2019/01/24 06:01

投稿

mpyw
mpyw

スコア5223

answer CHANGED
@@ -9,4 +9,26 @@
9
9
  @endforeach
10
10
  ```
11
11
 
12
- でどうですか?
12
+ でどうですか?
13
+
14
+ ----
15
+
16
+ ## 追記
17
+
18
+ ```php
19
+ public function confirm(ClientRequest $request)
20
+ {
21
+ return view('client.confirm')->with($request->only('month'));
22
+ }
23
+ ```
24
+
25
+ ```php
26
+ @foreach($month as $key => $value)
27
+ <label class="checkbox-inline">
28
+ {!! Form::checkbox("month[$key]", $value, old("month.$key")) !!}
29
+ {{ $value }}
30
+ </label>
31
+ @endforeach
32
+ ```
33
+
34
+ これでお試しください