2016-08-12 6 views
0

私は正常に動作する通常のログインフォームを持っています。今私はユーザーが彼のパスワードとユーザー名を入力すると、パスフレーズを入力する必要がある新しいページに彼をリダイレクトする正しい場合は、続行するために2番目の簡単なステップをしようとしています。Laravelの双方向ログインフォームを作成しようとしています - '文字列変換の配列'

私はこれは私がこれまでに作成したもの正しいかどうかはわかりません。これは私のルートです:これは私のauth.blade.php

{{ Form::open(['class' => 'form-horizontal']) }} 

    <div class="form-group"> {{ Form::textarea('key', ['class' => 'form-control', 'id' => 'key', 'autocomplete' => 'off']) }} </div><br/> 

    <hr /> 
    <div class="row"> 
     <button type="submit" class="btn btn-primary col-xs-4 col-xs-offset-4">Login</button> 
    </div> 
    <hr /> 

{{ Form::close() }} 

ある

Route::get ('/users/login', ['uses' => '[email protected]', 'before' => 'guest']); 
Route::post('/users/login', ['uses' => '[email protected]', 'before' => 'guest']); 

// new 
Route::get('/users/auth', ['uses' => '[email protected]', 'before' => 'guest']); 
Route::post('/users/auth', ['uses' => '[email protected]', 'before' => 'auth|csrf']); 

これは

public function login() { 
    return View::make('site.users.login'); 
} 

public function loginSubmit() { 
    $validatorRules = array(
     'captcha' => 'required|captcha', 
     'username' => 'required|alpha_dash', 
     'password' => 'required|min:6' 
    ); 

    Input::merge(array_map('trim', Input::all())); 
    $validator = Validator::make(Input::all(), $validatorRules); 

    if ($validator->fails()) { 
     return Redirect::to('/users/login')->withErrors($validator->errors())->withInput(Input::except(['captcha'])); 
    } 

    $user = User::where('username', Input::get('username'))->first(); 
    if (!$user) { 
     $validator->messages()->add('username', 'Invalid login or password.'); 
     return Redirect::to('/users/login')->withErrors($validator->errors())->withInput(Input::except(['captcha'])); 
    } 

    if (!Hash::check(Input::get('password'), $user->password)) { 
     $validator->messages()->add('username', 'Invalid login or password.'); 
     return Redirect::to('/users/login')->withErrors($validator->errors())->withInput(Input::except(['captcha'])); 
    } 

    //$user->last_login = \Carbon\Carbon::now(); 
    //$user->save(); 
    //Session::put('user', ['user_id' => $user->user_id]); 
    return Redirect::to('/users/auth'); 
} 
public function loginAuth() { 
    return View::make('site.users.auth'); 
} 
public function loginSubmitAuth() { 
    $validatorRules = array(
     'key' => 'required', 
     'captcha' => 'required|captcha' 
    ); 

    Input::merge(array_map('trim', Input::all())); 
    $validator = Validator::make(Input::all(), $validatorRules); 

    if ($validator->fails()) { 
     return Redirect::to('/users/auth')->withErrors($validator->errors())->withInput(Input::except(['captcha'])); 
    } 

    $user = User::where('key', Input::get('key'))->first(); 
    if (!$user) { 
     $validator->messages()->add('key', 'Invalid Key.'); 
     return Redirect::to('/users/auth')->withErrors($validator->errors())->withInput(Input::except(['captcha'])); 
    } 

    $user->last_login = \Carbon\Carbon::now(); 
    $user->save(); 
    Session::put('user', ['user_id' => $user->user_id]); 
    return Redirect::to('/'); 
} 

現在のエラーが'Array to string conversion'

すべてのヘルプは高く評価されている私のコントローラであり、 。あなたは

+0

どの行にエラーが表示されますか。私は入力::マージ(array_map( 'trim'、Input :: all())); /ベンダー/ laravel /フレームワーク/ SRC /照らしなさい/ HTML/FormBuilderでメッセージ「文字列への変換アレイ」は '「ErrorException」: – g9m29

+0

私は私のログでこれを持っているし、場所を正確にソースで見ることができないが、このです。 php:343' – Garg

+0

username/passwordを入力してログインをクリックすると空白のページが表示されます。 'auth.blade.php'にアクセスできない – Garg

答えて

1

あなたは二番目のパラメータ等の三番目のパラメータでは、アレイ内が空にするためにnullを渡す必要がありForm::textareaの2番目のパラメータの問題、

<div class="form-group"> 
    {{ Form::textarea('key',null, ['class' => 'form-control', 'id' => 'key', 'autocomplete' => 'off']) }} 
</div><br/> 

感謝のこれはあなたの問題を修正する場合:

{{ Form::textarea('key', null, ['class' => 'form-control', 'id' => 'key', 'autocomplete' => 'off']) }} 

値引数が第二来て、それがあるので、この方法です任意の第3のものとの差異において義務的である

+0

はい、これは空白ページのエラーを修正しました。今問題は、キーを入力するとログインページにリダイレクトされることです。 – Garg

+0

私はあなたが質問をした解決策を与えましたが、エラーはあなたのロジックのために来ます。私は 'enter'を押すと検証が失敗し、ログインページにリダイレクトしていると思います。このためには、手動でチェックすると、間違いなくその解決策が見つかるはずです。 –

+0

あなたはそうです。あなたは私に最初の質問の解決策を与え、私はそれを受け入れます。これでエラーはコントローラのロジックを比較することにあります。私はそれを修正しようとするか、新しい質問を投稿します。ありがとう! – Garg

関連する問題