🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

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

Laravel 5

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

Q&A

解決済

1回答

1688閲覧

Laravel FormRequestで都道府県(prefectures_name)のrulesだけが通らない

jiro-

総合スコア28

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

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

Laravel 5

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

0グッド

0クリップ

投稿2019/10/22 13:50

編集2019/10/22 15:11

前提・実現したいこと

Form入力をして確認画面に進むを押しても、確認画面へ進まずForm入力画面に戻ってしまいます。

試したこと

RegisterRequest内の 'prefectures_name' => ['required', 'string', 'max:255'],をコメントアウトし、それ以外のnameやemail.passwordなどだけでブラウザの確認画面へ進むを押すと、確認画面に移行できるので書き方が間違っているのはここで間違いないと思います。
Laravel prefectures_name バリデーション書き方や バリデーション通らない、などで検索をかけてみましたがそこまで細かく書いてくれていません。ご教示よろしくお願い致します。

該当のソースコード

resouces/views/form.blade.php

<tr> <th> 都道府県 <span class="required">必須</span> </th> <td> <select name="prefectures_name" id="area"> <option value>選択してください</option> <option value="北海道">北海道</option> <option value="青森県">青森県</option> <option value="岩手県">岩手県</option> <option value="宮城県">宮城県</option> <option value="秋田県">秋田県</option> <option value="山形県">山形県</option> <option value="福島県">福島県</option> <option value="茨城県">茨木県</option> <option value="栃木県">栃木県</option> <option value="群馬県">群馬県</option> <option value="埼玉県">埼玉県</option> <option value="千葉県">千葉県</option> <option value="東京都">東京都</option> <option value="神奈川県">神奈川県</option> <option value="日が他県">新潟県</option> <option value="富山県">富山県</option> <option value="石川県">石川県</option> <option value="福井県">福井県</option> <option value="山梨県">山梨県</option> <option value="長野県">長野県</option> <option value="岐阜県">岐阜県</option> <option value="静岡県">静岡県</option> <option value="愛知県">愛知県</option> <option value="三重県">三重県</option> <option value="滋賀県">滋賀県</option> <option value="京都府">京都府</option> <option value="大阪府">大阪府</option> <option value="兵庫県">兵庫県</option> <option value="奈良県">奈良県</option> <option value="和歌山県">和歌山県</option> <option value="鳥取県">鳥取県</option> <option value="島根県">島根県</option> <option value="岡山県">岡山県</option> <option value="広島県">広島県</option> <option value="山口県">山口県</option> <option value="徳島県">徳島県</option> <option value="香川県">香川県</option> <option value="愛媛県">愛媛県</option> <option value="高知県">高知県</option> <option value="福岡県">福岡県</option> <option value="佐賀県">佐賀県</option> <option value="長崎県">長崎県</option> <option value="熊本県">熊本県</option> <option value="大分県">大分県</option> <option value="宮崎県">宮崎県</option> <option value="鹿児島県">鹿児島県</option> <option value="沖縄県">沖縄県</option> </select> @if($errors->has('prefectures_name')) <p class="text-danger">{{ $errors->first('prefectures_name') }}</p> @endif </td> </tr> @endsection

Illuminate/Foundation/Http/FormRequest/RegisterRequest

<?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Contracts\Validation\Validator; use Illuminate\Http\Exceptions\HttpResponseException; class RegisterRequest extends FormRequest { public function rules() { return [ 'prefectures_name' => ['required', 'string', 'max:255'], ]; } public function messages(){ return [ 'prefectures_name.required' => '都道府県を選択してください', ]; } }

App/Http/Controllers/RegisterController

<?php namespace App\Http\Controllers\Auth; use App\User; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Validator; use Illuminate\Foundation\Auth\RegistersUsers; use Illuminate\Http\Request; use App\Http\Requests\RegisterRequest; class RegisterController extends Controller { public function validator(array $data) { return Validator::make($data, 'prefectures_name' => ['required', 'string', 'max:255'], ); public function create(array $data) { return User::create([ 'prefectures_name' => $data['prefectures_name'], ]); } }

databeases/migrations/create_users_table

<?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateUsersTable extends Migration { public function up() { Schema::create('users', function (Blueprint $table) { $table->string('prefectures_name')->comment('都道府県名'); }); }

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

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

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

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

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

meshi_s

2019/10/23 01:40

Form入力画面に戻った時にどんなエラーが出力されていますか? また、RegisterRequestは使用されていますか? 上記コードだと使用されているように見えないので。
jiro-

2019/10/23 02:02

ご返信ありがとうございます。 RegisterControllerの11行目でRegisterRequestを使っているつもりなのですが、この書き方では使えてないのですか?
jiro-

2019/10/23 02:49

ご丁寧にありがとうございます。 確かにvalidationかかっていないように思います。 上記HP確認させていただいたのですが、フォームリクエストへのAfterフックの追加ができていないためRegisterRequestが使えていないのでしょうか? RegisterContorollerで記載できていない所があったのですが、確認画面へ移行するactionはconfirmです。何度もすいませんm(__)m public function confirm(RegisterRequest $request) { $inputs2 = $request->all(); return view('auth/register_confirm', ['inputs2' => $inputs2]); } public function complete(RegisterRequest $request) { \Debugbar::info("test"); $action = $request->get('action', 'back'); $inputs2 = $request->except('action'); \Debugbar::info($inputs2); if($action === 'post') { \Mail::to($inputs2["email"])->send(new RegisterSendmail($inputs2)); $request->session()->regenerateToken(); return view('auth/register_complete'); } else { return redirect() ->route('auth/register') ->withInput($inputs2); } }
meshi_s

2019/10/23 03:36

confirmというメソッドがいたのですね、confirmでRegisterRequest使用されているかと。 記載がなく、分からなかったので。 Afterフックは複雑なバリデーション時などっぽいので、本件とは関係ないと思います。
jiro-

2019/10/23 04:51

質問が記載足らずで分かりにくく申し訳ありませんでしたm(__)m 本当にご丁寧にありがとうございました!
guest

回答1

0

自己解決

入力画面のviewの方で電話番号にinputを3つ使ってたんですが、inputを1つにして確認画面に進むを押すとRegisterRequestにprefecture_nameを使用しても入力画面へ戻らず確認画面が表示できるようになりました。

投稿2019/10/23 02:03

jiro-

総合スコア28

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問