2016-03-13 36 views
2

如果我使用验证用户::() - >用户名在刀片文件laravel返回我一个空字符串,但验证::用户() - >电子邮件填充。我使用自己的AuthController,并且我的登录,注册和注销工作正常,但我无法获得用户名。laravel 5.2 - 验证::用户() - >用户名是空

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'); 
}); 

而且我自定义的验证控制器是:

<?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“网络”中间件路线组,您可以将两个“客人”和“身份验证”下一个路线“网络”的中间件。 你在哪里调用Auth :: user() - > username? – Ruffles

+0

我把它在我的home.blade.php如果采用通过认证(AUTH ::检查()) –

+0

所以你必须像'@if(AUTH ::检查())验证::用户() - >用户名@ endif'? – Ruffles

回答

2

最有可能你失踪username在您的User模型的$fillable

create方法只接受来自$fillable到来领域。

+0

字段用户名在用户名可填写中var –

+0

请尝试使用替代方法在将用户名值保存到数据库时创建和硬编码用户名值。 – user2094178

0

请编辑您的用户模型是这样的:

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

只有$可填写字段填上将创建方法。