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

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

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

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

Laravel 5

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

Q&A

解決済

1回答

9853閲覧

Laravelでログイン時のバリデーションがうまくいかないです。

miguel_2018

総合スコア13

PHP

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

Laravel 5

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

0グッド

1クリップ

投稿2018/10/23 07:33

いつもお世話になっております。

Laravel5.7を使用しています。
ログイン機能はLaravelのものをそのまま使用してビューだけ変えて使用しています。
今ログイン時にIDとパスワードを入力してもらってログイン成功したらメニューへ遷移させています。
メニューへの遷移はapp/Http/Controllers/Auth/LoginController.phpに下記を追加してうまくいっています。

php

1protected $redirectTo = '/menu';

しかし成功時はこれで良いのですが、ログイン情報が間違っている場合や空で送った場合に、下記のエラーが発生してしまいます。
app/Exception/Handler.phpのrenderメソッドに渡ってくるものをログにdumpしました。

php

1Illuminate\Validation\ValidationException: The given data was invalid. in /home/user/projectname/vendor/laravel/framework/src/Illuminate/Validation/Validator.php:306

バリデーションルールを下記のようにapp/Http/Controllers/Auth/LoginController.phpに追加していますがダメでした。

php

1protected function validateLogin(Request $request) 2 { 3 $this->validate($request, [ 4 $this->username() => 'required|string', 5 'password' => 'required|string', 6 ]); 7 return redirect()->guest('/login'); 8 9 }

やりたいことは、IDとパスワードが空もしくは間違っているなら独自のエラーメッセージをviewに渡したいです。
どのようにしたらできますかご教授いただけたら幸いです。

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

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

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

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

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

mix-peach

2018/10/25 02:12

ValidationExceptionは、発生すると一つ前の画面に自動でリダイレクトされるのではないかと思うのですが、「ダメでした」というのは、どうだめなのでしょう? ValidationExceptionのエラー画面が表示されるのでしょうか?
mix-peach

2018/10/25 02:19

ValidationExceptionがエラー画面として表示されるのは、見たことがないので、もしそうなら別のところに原因があるのかも?? ちなみに、$this->validateの中身は、バリデーションでエラーがある場合に ValidationExceptionを発生させるよう処理が書かれているので、「ValidationException」が発生すること自体は、「正常(エラーですけど)」ですよ。
miguel_2018

2018/10/25 10:21

ValidationExceptionのエラー画面は表示されておりません。ブラウザでページが表示できませんでしたと表示されてしまっていました。httpステータスは500になってました。エラーが発生した場合にもとの画面にリダイレクトさせる処理をいれたところバリデーションのメッセージとともにもとの画面に戻れました。認証がダメだったらもとの画面にリダイレクトさせる処理を自分で書かないとダメだったようで解決いたしました。お騒がせ致しまして申し訳ありませんでした。
guest

回答1

0

自己解決

もともとありました、app/Http/Controllers/Auth/LoginController.php
を使わないで新しく自分でコントローラ作成して新しくアクションを用意して解決できました。

php

1 2app/Http/Controllers/TopController.php 3 4 21 public function logon(Request $request) 5 22 { 6 23 7 24 $credentials = [ 8 25 'login_id' => $request->input('login_id'), 9 26 'password' => $request->input('password') 10 27 ]; 11 28 12 29 $rules = [ 13 30 'login_id' => 'required|string', 14 31 'password' => 'required|string' 15 32 ]; 16 33 17 34 $messages = [ 18 35 'login_id.required' => '必ず入力してください', 19 36 'password.required' => '必ず入力してください' 20 37 ]; 21 38 22 39 $validator = Validator::make($credentials, $rules, $messages); 23 40 24 41 if($validator ->passes()) 25 42 { 26 43 if(Auth::attempt($credentials)) 27 44 { 28 45 return redirect('menu'); 29 46 } 30 47 else 31 48 { 32 49 return Redirect::back()->with('msg','間違っています'); 33 50 } 34 51 } 35 52 else 36 53 { 37 54 return Redirect::back()->withErrors($validator)->withInput(); 38 55 } 39

投稿2018/10/25 10:34

miguel_2018

総合スコア13

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問