質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

0回答

414閲覧

Laravel5.6 ユーザーupdateアクションでのフォームリクエスト適用について

rewdaraw

総合スコア11

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

1クリップ

投稿2018/09/21 02:21

問題点

ユーザーの情報のupdate時にそれ専用で作ったフォームリクエストを適用すると、フォームリクエストのバリデーション自体は効いているがその後バリデーションを通過したデータが更新(save)されない。

フォームリクエストを使いたいのですが誰か分かる方おりませんでしょうか?

補足

コントローラーのupdateメソッド内にフォームリクエストを適用せずにバリデーション処理を書くと、バリデーション後にデータは更新される。

  • 使っているフォームリクエスト
<?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Validation\Rule; // email項目で自分を無視するときにundefined $userの回避のため use Illuminate\Support\Facades\Auth; class UserProfileUpdateRequest extends FormRequest { /** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { return true; } /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { // email項目で自分を無視するときにundefined $userの回避のため $user = Auth::user(); return [ 'name' => 'required|string|max:10| regex:/^[^ -~。-゚\x00-\x1f\t]+$/u', 'name_kana' => 'required|string|max:20| regex:/^[^ -~。-゚\x00-\x1f\t]+$/u| regex:/^[ァ-ヶー]+$/u', 'email' => ['required', 'string', 'email', Rule::unique("users")->ignore($user->id)], 'email_confirmation' => 'required|email|same:email', 'birth_day' => 'required|date', 'address' => 'required|max:40| regex:/^[^ -~。-゚\x00-\x1f\t]+$/u', 'job_type_id' => 'required', 'password' => 'required|min:4|max:8| regex:/^[a-zA-Z0-9]+$/u', ]; } }
  • Usersコントローラー(フォームリクエスト適用時)
use App\Http\Requests\UserProfileUpdateRequest; public function update(UserProfileUpdateRequest $request, $user) { $user = User::findOrFail($user); // データの上書き $user->name = $request->name; $user->name_kana = $request->name_kana; $user->email = $request->email; $user->birth_day = $request->birth_day; $user->address = $request->address; $user->job_type_id = $request->job_type_id; // 保存 $user->save(); // フラッシュメッセージと共にリダイレクト return redirect('users/')->with('message', '情報を編集しました'); }
  • Usersコントローラー(フォームリクエスト使わない)
public function update(Request $request, $user) { $user = User::findOrFail($user);      // バリデーションルール $request->validate([ 'name' => [ 'required', 'string', 'max:10', 'regex: /^[^ -~。-゚\x00-\x1f\t]+$/u' ], 'name_kana' => [ 'required', 'string', 'max:20', 'regex: /^[^ -~。-゚\x00-\x1f\t]+$/u', 'regex: /^[ァ-ヶー]+$/u' ], 'email' => [ 'required', 'string', 'email', 'max:255', Rule::unique('users')->ignore($user->id), ], 'email_confirmation' => [ 'required', 'same:email' ], 'birth_day' => [ 'required', 'date' ], 'address' => [ 'required', 'max:40', 'regex: /^[^ -~。-゚\x00-\x1f\t]+$/u' ], 'job_type_id' => [ 'required' ], ] ); // データの上書き $user->name = $request->name; $user->name_kana = $request->name_kana; $user->email = $request->email; $user->birth_day = $request->birth_day; $user->address = $request->address; $user->job_type_id = $request->job_type_id; // 保存 $user->save(); // フラッシュメッセージと共にリダイレクト return redirect('users/')->with('message', '情報を編集しました'); }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問