2017-04-01 18 views
0

こんにちは、私はユーザーを作成するときに問題が発生しました。タイプエラー:SessionGuard.php線407に FatalThrowableError:私はこのエラーを得た(\認証\ SessionGuard ::ログインを照らすために渡される引数1)で/ホームと呼ばれる、ヌル与えられ、インターフェースを照らし\契約が認証\認証可能に\実装する必要があります/mariusz/Pulpit/www/szpital/vendor/laravel/framework/src/Illuminate/Foundation/Auth/RegistersUsers.phpはライン上で35Laravel 5.4ユーザー作成時のエラー

ユーザーはとにかく作成されますが、このエラーはとてもanoyingと私は解決方法を知ってはいけませんそれ。 私はlaravel authを使用しています。ユーザ用の役割を追加する必要があるため、私のコントローラはそれほど編集しません。

<?php 
 

 
namespace App\Http\Controllers\Auth; 
 

 
use App\User; 
 
use App\Role; 
 
use App\Http\Controllers\Controller; 
 
use Illuminate\Support\Facades\Validator; 
 
use Illuminate\Foundation\Auth\RegistersUsers; 
 
use Illuminate\Support\Facades\Auth; 
 

 
class RegisterController extends Controller 
 
{ 
 
    /* 
 
    |-------------------------------------------------------------------------- 
 
    | Register Controller 
 
    |-------------------------------------------------------------------------- 
 
    | 
 
    | This controller handles the registration of new users as well as their 
 
    | validation and creation. By default this controller uses a trait to 
 
    | provide this functionality without requiring any additional code. 
 
    | 
 
    */ 
 

 
    use RegistersUsers; 
 

 
    /** 
 
    * Where to redirect users after registration. 
 
    * 
 
    * @var string 
 
    */ 
 
    protected $redirectTo = '/home'; 
 

 
    /** 
 
    * Create a new controller instance. 
 
    * 
 
    * @return void 
 
    */ 
 
    public function __construct() 
 
    { 
 
     $this->middleware('guest'); 
 
    } 
 

 
    /** 
 
    * Get a validator for an incoming registration request. 
 
    * 
 
    * @param array $data 
 
    * @return \Illuminate\Contracts\Validation\Validator 
 
    */ 
 
    protected function validator(array $data) 
 
    { 
 
     return Validator::make($data, [ 
 
      'name' => 'required|max:255', 
 
      'lastname' => 'required|max:255', 
 
      'phonenumber' => 'required|max:255', 
 
      'email' => 'required|email|max:255|unique:users', 
 
      'password' => 'required|min:6|confirmed', 
 
     ]); 
 
    } 
 

 

 
    /** 
 
    * Create a new user instance after a valid registration. 
 
    * 
 
    * @param array $data 
 
    * 
 
    */ 
 

 
    public function create(array $data) 
 
    { 
 
     $user = new User(); 
 
     $user->name = $data['name']; 
 
     $user->lastname = $data['lastname']; 
 
     $user->phonenumber = $data['phonenumber']; 
 
     $user->email = $data['email']; 
 
     $user->password = bcrypt($data['password']); 
 
     $user->save(); 
 
     $user->roles()->attach(Role::where('name', 'User')->first()); 
 
     Auth::login($user); 
 
     
 
     
 
    } 
 
}
私は私がそれを編集はずのmybeを知りません。私はこのエラーが発生したときに説明したい: 1.私はページを作成します。 2.I書き込み名など 3.作成時にエラーが発生しました 4.次にページを更新すると、ログインしてホームページにリダイレクトされます。

答えて

1

登録後に自動ログインするために、Laravel 5.4に行Auth::login($user);を追加する必要はありません。置き換え:

public function create(array $data) 
{ 
     $user = new User(); 
     $user->name = $data['name']; 
     $user->lastname = $data['lastname']; 
     $user->phonenumber = $data['phonenumber']; 
     $user->email = $data['email']; 
     $user->password = bcrypt($data['password']); 
     $user->save(); 
     $user->roles()->attach(Role::where('name', 'User')->first()); 
     Auth::login($user); 
} 

で:

public function create(array $data) 
{ 
     $user = new User(); 
     $user->name = $data['name']; 
     $user->lastname = $data['lastname']; 
     $user->phonenumber = $data['phonenumber']; 
     $user->email = $data['email']; 
     $user->password = bcrypt($data['password']); 
     $user->save(); 
     $user->roles()->attach(Role::where('name', 'User')->first()); 

     return $user; 
} 

をごLaravelフレームワークと認証コントローラコードが最新、RegisterUsers形質はあなたのためにそれに対処すべきである場合。これにより、問題が解決するはずです。

+0

がたのTHXその作業を終了しますreturn $ユーザーを終了するために解決デフォルトのリターン$ユーザー

について

return User::create([ 'name' => $data['name'], 'username' => $data['username'], 'email' => $data['email'], 'password' => bcrypt($data['password']), ]); 

を作成; P – Mariusz

1

すると利用ユーザー::

$user = new User([ 
     'name' => $data['name'], 
     'username' => $data['username'], 
     'email' => $data['email'], 
     'password' => bcrypt($data['password']), 
    ]); 
    $user->save(); 

    return $user; 
関連する問題