2016-03-13 3 views
2

Если я использую Auth :: user() -> имя пользователя в файле Blade, laravel возвращает мне пустую строку String, но Auth :: user() -> email заполнены. Я использую собственный AuthController и мой вход, регистрацию и выход из системы, но я не могу получить имя пользователя.laravel 5.2 - Auth :: user() -> имя пользователя пуста

routes.php

<?php 

Route::group(['middleware' => ['web']] , function() { 
    Route::get('/', function() { 
     return view('welcome'); 
    })->name('home'); 
}); 

Route::group(['middleware' => ['web','guest']], function() { 
    Route::auth(); 

    #Sign up Routes 
    Route::get('/signup', function() { 
     return view('auth.signup'); 
    })->name('auth.signup'); 
    Route::post('/signup', '[email protected]'); 

    #Sign in Routes 
    Route::get('/signin', function() { 
     return view('auth.signin'); 
    })->name('auth.signin'); 
    Route::post('/signin', '[email protected]'); 
}); 

Route::group(['middleware' => ['web','auth']], function() { 
    Route::auth(); 

    #Sign out Routes 
    Route::get('/signout', '[email protected]')->name('auth.signout'); 
}); 

И мой пользовательский Auth контроллер:

<?php 

namespace App\Http\Controllers; 

use Auth; 
use Illuminate\Http\Request; 
use App\Http\Requests; 
use App\User; 

class AuthController extends Controller 
{ 

    public function signup(Request $request) { 
    $this->validate($request, [ 
     'email' => 'required|unique:users|email|max:255', 
     'username' => 'required|unique:users|alpha_dash|min:2|max:20', 
     'password' => 'required|min:6' 
    ]); 

    User::create([ 
     'email' => $request->input('email'), 
     'username' => $request->input('username'), 
     'password' => bcrypt($request->input('password')), 
    ]); 

    return redirect()->route('home'); 
    } 

    public function signin(Request $request) { 
    $this->validate($request, [ 
     'email' => 'required', 
     'password' => 'required' 
    ]); 

    if(!Auth::attempt($request->only(['email', 'password']), $request->has('remember'))) { 
     return redirect()->back()->with('flash-message','We can not sign you in with this data!'); 
    } 

    return redirect()->route('home'); 
    } 

    public function signout() { 
    Auth::logout(); 

    return redirect()->route('home'); 
    } 
} 

Может быть кто-то может помочь мне .

Примечание: Я добавил имя пользователя в User.php под заполненным массивом.

+0

0. Вам не нужно добавлять 2 'web' группы маршрутов промежуточного программного обеспечения, вы можете использовать маршруты «гостя» и «auth» под одним «промежуточным» интерфейсом. Где вы называете Auth :: user() -> username? – Ruffles

+0

Я вызываю это в моем home.blade.php, если использование аутентифицировано (Auth :: check()) –

+0

, поэтому у вас есть что-то вроде '@if (Auth :: check()) Auth :: user() -> имя пользователя @ endif'? – Ruffles

ответ

2

Скорее всего, вам не хватает username в $fillable вашей модели User.

Метод create принимает только поля, исходящие от $fillable.

+0

Поле Имя пользователя находится в именах пользователей fillable var –

+0

Попробуйте использовать альтернативный метод 'create' и hardcode значение имени пользователя при сохранении его в базе данных. – user2094178

0

Пожалуйста, измените модель пользователя, как это:

protected $fillable = [ 
     'email', 'username', 'password', 
    ]; 

только $ заполняемых полей вставку Создать метод.