2014-04-03 81 views
0

當我查看用戶登錄的Laravel文檔和教程時,他們都有一個單獨的login.php視圖來處理此問題。我正在學習如何創建電子商務/購物車網站。我想要做的是在每個頁面上都有一個側欄顯示未登錄用戶訪問的登錄表單。Laravel - 在任何頁面登錄

由於登錄部分的全局性質,我對如何路由這個問題感到困惑。

//AccountController.php 

class AccountController extends BaseController { 

public function signIn() 
{ 
    $rules = array(
     'email'=>'required|email', 
     'password'=> 'required' 
     ); 

    $validation = Validator::make(Input::all(), $rules); 

    if($validation->fails()) 
    { 
     return Redirect::back()->with('message','Incorrect username and/or password'); 
     ->withErrors($validation) 
     ->withInput(Input::except('password')); 
    } 
    else{ 

     $user = array(
      'email'  => Input::get('email'), 
      'password' => Input::get('password') 
     ); 

        // login user 
     Auth::attempt($user) 
     return Redirect::back(); 
    } 
} 
} 


這是形式,我的看法:

//views/layouts/master.blade.php 

{{ Form::open(array('action' => '[email protected]')) }} 
{{ Form::label('email', 'Email address: ') }} 
{{ Form::text('email', Input::old('email')) }} 
<br /> 
{{ Form::label('password','Password') }} 
{{ Form::password('password') }} 
<br /> 
{{ Form::submit('Login', array('class'=> 'btn btn-info')) }} 
{{Form::close() }} 



什麼是建立這個表格的路線正確的方法是什麼?

回答

0

這是一種方式:

Route::post('/signin', '[email protected]'); 

而且,要檢查如果用戶當前登錄的,如果他/她不是,顯示登錄表單,表單可改爲:

@if(! Auth::check()) 
    {{ Form::open(array('action' => '[email protected]')) }} 
     {{ Form::label('email', 'Email address: ') }} 
     {{ Form::text('email', Input::old('email')) }} 
     <br /> 
     {{ Form::label('password','Password') }} 
     {{ Form::password('password') }} 
     <br /> 
     {{ Form::submit('Login', array('class'=> 'btn btn-info')) }} 
    {{Form::close() }} 
@endif 
+0

我用你的路線,它大部分工作。我不明白'/ signin'參數如何使路由工作。此外,我嘗試從多個頁面登錄,我可以登錄,但它總是將我引導回主頁。我應該使用除Redirect :: back()之外的其他內容嗎? – user2127521

+0

路由基本上就是你的url的定義,所以'/ signin'是url'http:// yourserver.dev/signin',Route :: post()告訴Laravel期望POST方法發送到那個url。重定向::返回()應該讓你回到你所在的URL。 –

+0

所以'/ signin'是一個「虛擬」網址......即使我沒有登錄視圖也沒關係,因爲我重定向回到控制器中的前一頁。從而允許我在任何頁面上使用該表單?並且Redirect :: back()現在可以正常工作。 – user2127521