実現したいこと
ログイン画面の実装中に起きたエラーの解決
前提
PHP laravelでブログサイトを作成しています。
ログイン画面で適当な文字を入れた場合や何も入れなかった場合のエラーメッセージを実装中にエラーが出ました。
発生している問題・エラーメッセージ
SessionController.phpの19行目
Trying to get property 'password' of non-object
該当のソースコード
SessionController.php
php
1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6 7 8use App\User; 9 10class SessionController extends Controller 11{ 12 public function create(){ 13 return view('session.create', [ 14 'title' => 'ログイン', 15 ]); 16 } 17 public function store(Request $request){ 18 $user = User::where('name', $request->name)->first(); 19 if($user->password !== $request->password){ 20 session()->flash('danger', 'ログインに失敗しました。'); 21 return redirect()->route('session.create'); 22 } 23 session()->put('user_id', $user->id); 24 return redirect()->route('posts.index'); 25 } 26 public function destroy(){ 27 session()->flush(); 28 return redirect()->route('session.create'); 29 } 30} 31
LoginController.php
php
1<?php 2 3namespace App\Http\Controllers\Auth; 4 5use App\Http\Controllers\Controller; 6use App\Providers\RouteServiceProvider; 7use Illuminate\Foundation\Auth\AuthenticatesUsers; 8use App\User; 9use Illuminate\Support\Facades\Validator; 10 11 12class LoginController extends Controller 13{ 14 /* 15 |-------------------------------------------------------------------------- 16 | Login Controller 17 |-------------------------------------------------------------------------- 18 | 19 | This controller handles authenticating users for the application and 20 | redirecting them to your home screen. The controller uses a trait 21 | to conveniently provide its functionality to your applications. 22 | 23 */ 24 25 use AuthenticatesUsers; 26 27 /** 28 * Where to redirect users after login. 29 * 30 * @var string 31 */ 32 protected $redirectTo = RouteServiceProvider::HOME; 33 34 /** 35 * Create a new controller instance. 36 * 37 * @return void 38 */ 39 public function __construct() 40 { 41 $this->middleware('guest')->except('logout'); 42 } 43 44 protected function validator(array $data) 45 { 46 return Validator::make($data, [ 47 'email' => ['required', 'string', 'max:255', 'unique:users'], 48 'password' => ['required', 'string', 'min:8', 'confirmed', 'max:255'], 49 ]); 50 } 51} 52
web.php
php
1<?php 2 3/* 4|-------------------------------------------------------------------------- 5| Web Routes 6|-------------------------------------------------------------------------- 7| 8| Here is where you can register web routes for your application. These 9| routes are loaded by the RouteServiceProvider within a group which 10| contains the "web" middleware group. Now create something great! 11| 12*/ 13 14Route::get('/', function () { 15 return redirect()->route('posts.index'); 16}); 17Route::resource('users', 'UserController')->only([ 18 'create', 'store','edit', 'update' 19]); 20Route::resource('posts', 'PostController')->except([ 21 'show', 22]); 23Route::get('/login', 'SessionController@create')->name('session.create'); 24Route::post('/login', 'SessionController@store')->name('session.store'); 25Route::delete('/logout', 'SessionController@destroy')->name('session.destroy');
試したこと
自分で調べたみたところヘルパ関数のoptional()を使うと良いというサイトが多く自分でも使ってみたのですがnullで返ってくるのでエラーは起きませんでしたがエラーメッセージが出ませんでした。
補足情報(FW/ツールのバージョンなど)
laravel6です。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2023/03/12 06:34