質問編集履歴

2

解決

2022/08/07 16:24

投稿

jirou6699
jirou6699

score4

test CHANGED
File without changes
test CHANGED
@@ -110,4 +110,36 @@
110
110
  Route::post('destroy/{id}/', [ContactFormController::class, 'destroy'])->name('contact.destroy');
111
111
  });
112
112
  ```
113
+ # 解決
114
+ アドバイスをもとに下記修正したところ、想定通りの動きができました。
115
+ ### ルーティング
116
+ アクションを全て記載していたので、resourcesに変更してコードをスッキリしました。
117
+ ```PHP:routes/web.php
118
+ Route::group(['middleware'=>'auth'], function(){
119
+ Route::resource('contact', ContactFormController::class,
120
+ );
121
+ ```
113
122
 
123
+ ### コントローラーの記載
124
+ こちらの記事を参考にフィルを使う場合の記載に変更しました。結局authorizeを使用した方法しか今はわかりませんでしたが、authorizeの第二引数の使い方が良くないことは理解できました。またルーティングをresourceにすると、updateメソッドで$idを使用しないと値をとれませんでした。
125
+ ただ、これで投稿ユーザーしか編集ができないように設定することができました!
126
+ [fillを使ったカラムの登録](https://qiita.com/tkt989/items/c2e01ec2fe91ef5f08d2 "fillを使ったカラムの登録")
127
+ ```PHP
128
+ public function update(Request $request, $id)
129
+ {
130
+
131
+ $contact = ContactForm::find($id);
132
+ $this->authorize('update', $contact); //authorizeを使用した認可
133
+ $contact->fill([
134
+ 'name' => $request->your_name,
135
+ 'title' => $request->title,
136
+ 'email' => $request->email,
137
+ 'url' => $request->url,
138
+ 'gender' => $request->gender,
139
+ 'age' => $request->age,
140
+ 'contact' => $request->contact,
141
+ ]);
142
+ $contact->save();
143
+ return redirect()
144
+ ->route('contact.index');
145
+ ```

1

ルーティングを追加しました。

2022/08/07 09:04

投稿

jirou6699
jirou6699

score4

test CHANGED
File without changes
test CHANGED
@@ -98,3 +98,16 @@
98
98
 
99
99
  よろしくお願いします。
100
100
 
101
+ ### ルーティング
102
+ ```PHP:routes/web.php
103
+ Route::group(['prefix'=>'contact','middleware'=>'auth'], function(){
104
+ Route::get('index', [ContactFormController::class ,'index'])->name('contact.index');
105
+ Route::get('create', [ContactFormController::class ,'create'])->name('contact.create');
106
+ Route::post('store', [ContactFormController::class ,'store'])->name('contact.store');
107
+ Route::get('show/{id}/', [ContactFormController::class, 'show'])->name('contact.show');
108
+ Route::get('edit/{id}/', [ContactFormController::class, 'edit'])->name('contact.edit');
109
+ Route::post('update/{id}/', [ContactFormController::class, 'update'])->name('contact.update');
110
+ Route::post('destroy/{id}/', [ContactFormController::class, 'destroy'])->name('contact.destroy');
111
+ });
112
+ ```
113
+