2016-05-26 4 views
3

Я пытаюсь отправить данные на with(), но при просмотре страницы входа обновляется, но ничего не отображается. Я пробовал это почти со всем, я прочитал много вопросов, которые пробовали почти каждый путь.Laravel: Перенаправление с данными

Мой контроллер, условие if работает.

public function authenticate(Request $request) 
{ 
    $validator = Validator::make(Input::get(), 
     [ 
      'password' => 'required', 
      'username' => 'required' 
     ] 
    ); 
    if ($validator->fails()) { 
     return redirect() 
      ->back() 
      ->withErrors($validator->errors()) 
      ->with('message', 'Invalid Username or Password.') 
      ->with('form', 'login') 
      ->withInput(\Input::except('password')); 
    } 
    $user = array(
     'name' => Input::get('username'), 
     'password' => Input::get('password') 
    ); 
    if (Auth::attempt($user)) { 
     return redirect()->intended('dashboard'); 
    } else { 
     $request->session()->put('error_message', 'Incorrect email or password'); 
     $request->session()->put('form', 'login'); 
     return redirect() 
      ->back(); 

    } 
} 

И моя точка зрения:

<form class="login-form" method="post" style="{{{ Session::get('form', 'login') == 'login' ? 'display:block' : 'display:none;' }}}"> 
    <input type="hidden" name="_token" value="{{ csrf_token() }}"> 
    <h3 class="form-title">Login to your account</h3> 
    <div class="alert alert-danger {{{ (Session::has('message') && Session::get('form', 'login') == 'login') ? '' : 'display-hide' }}}"> 
     <button class="close" data-close="alert"></button> 

     <span> 
      {!! Session::has('message') ? Session::get('message') : 'Please correct your fields.' !!} 
     </span> 

     <span> 
      {!! session()->has('error_message') ? session('error_message') : 'Please correct your fields.' !!} 
     </span> 
    </div> 
    <div class='form-group {{ $errors->has("username") ? "has-error":"" }}'> 
     <!--ie8, ie9 does not support html5 placeholder, so we just show field title for that--> 
     <label class="control-label visible-ie8 visible-ie9">@Username</label> 
     <div class="input-icon"> 
      <i class="fa fa-envelope"></i> 
      {!! Form::text('username', '', ['class' => 'form-control placeholder-no-fix', 'placeholder' => 'Username']) !!} 
      <span class="help-block"> {{ $errors->first("username") }} </span> 
     </div> 
    </div> 
    <div class='form-group {{ $errors->has("password") ? "has-error":"" }}'> 
     <label class="control-label visible-ie8 visible-ie9">Password</label> 
     <div class="input-icon"> 
      <i class="fa fa-lock"></i> 
      {!! Form::password('password', ['class' => 'form-control placeholder-no-fix', 'placeholder' => 'Password']) !!} 
      <span class="help-block"> {{ $errors->first("password") }} </span> 
     </div> 
    </div> 
    <div class="form-actions"> 
     <!--<label class="checkbox"> 
     <input type="checkbox" name="remember" value="1"/> Remember me </label>--> 
     <button type="submit" class="btn red pull-right"> 
     Login <i class="m-icon-swapright m-icon-white"></i> 
     </button> 
    </div> 
    <br/> 
    <div class="forget-password"> 
     <h4>Forgot your password ?</h4> 
     <p> 
      <a href="javascript:;" id="forget-password">Reset</a> your account login info. 
     </p> 
    </div> 
</form> 

routes.php эти маршруты:

Route::group(['middleware' => 'guest'], function() 
{ 
    // login routes 

    Route::get('/login', ['as' => 'login', 'uses' => "[email protected]"]); 
    Route::post('/login', ['uses' => "[email protected]"]); 

    Route::post('/reset', "Auth\[email protected]"); 
    Route::get('/password/reset/{token}', '[email protected]'); 
    Route::post('/password/reset', 'Auth\[email protected]'); 

}); 
    Route::get('/welcome', '[email protected]'); 

Route::group(['middleware' => ['auth']], function() 
{ 
    // COMMONS 
    Route::get('/', '[email protected]'); 
    Route::get('/dashboard', ['as' => 'dashboard', 'uses' => '[email protected]']); 
    Route::get('/logout', ['as' => 'logout', 'uses' => "[email protected]"]); 



    Route::group(['as' => 'admin::', 'middleware' => 'role:admin'], function() 
    { 

     // USERS 
     Route::group(['as' => 'users::', 'prefix' => 'users'], function() 
     { 
      Route::get('/', ['as' => 'manage', 'uses' => '[email protected]']); 
      Route::post('handle', ['as' => 'handle', 'uses' => '[email protected]']); 

      Route::get('new', ['as' => 'new', 'uses' => '[email protected]']); 
      Route::post('new', ['uses' => '[email protected]']); 

      Route::get('edit-basic/{id}', ['as' => 'edit_basic', 'uses' => '[email protected]']); 
      Route::post('edit-basic/{id}', ['uses' => '[email protected]']); 

      Route::get('edit-historical/{id}', ['as' => 'edit_historical', 'uses' => 'AdminControlle[email protected]']); 
      Route::post('edit-historical/{id}', ['uses' => '[email protected]']); 

      Route::post('validate-username', ['as' => 'validate_username', 'uses' => '[email protected]']); 
      Route::post('validate-email/{id?}', ['as' => 'validate_email', 'uses' => '[email protected]']); 
     }); 

    }); 

}); 

на неверных имени пользователя и пароля, сообщение не появляется.

ответ

2

Попробуйте добавлять сообщения с $request->session()->put():

$request->session()->put('error_message', 'Incorrect email or password'); 
$request->session()->put('form', 'login'); 

и получать данные сеанса:

{!! session()->get('error_message', 'Please correct your fields.') !!} 

Или

{!! session()->has('error_message') ? session('error_message') : 'Please correct your fields.' !!} 

Кроме того, проверьте, если ваши сеансы работать должным образом. Есть несколько вещей, которые сломали данные сессии, например manually adding web middleware in 5.2.27 и выше.

+0

Неопределенная переменная: запрос на просмотр. – Gammer

+0

@ Gammer, попробуйте обновленный код. –

+0

Все еще не работает, я обновляю вопрос, я вставляю полный метод контроллера и полный вид, пожалуйста, краткий обзор. – Gammer

0

Добавить веб-группе промежуточного

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

В коде ниже

Route::group(['middleware' => ['auth']], function() 
{ 
// COMMONS 
Route::get('/', '[email protected]'); 
Route::get('/dashboard', ['as' => 'dashboard', 'uses' => '[email protected]']); 
Route::get('/logout', ['as' => 'logout', 'uses' => "[email protected]"]); 



Route::group(['as' => 'admin::', 'middleware' => 'role:admin'], function() 
{ 

    // USERS 
    Route::group(['as' => 'users::', 'prefix' => 'users'], function() 
    { 
     Route::get('/', ['as' => 'manage', 'uses' => '[email protected]']); 
     Route::post('handle', ['as' => 'handle', 'uses' => '[email protected]']); 

     Route::get('new', ['as' => 'new', 'uses' => 'Adm[email protected]']); 
     Route::post('new', ['uses' => '[email protected]']); 

     Route::get('edit-basic/{id}', ['as' => 'edit_basic', 'uses' => '[email protected]']); 
     Route::post('edit-basic/{id}', ['uses' => '[email protected]']); 

     Route::get('edit-historical/{id}', ['as' => 'edit_historical', 'uses' => '[email protected]']); 
     Route::post('edit-historical/{id}', ['uses' => '[email protected]']); 

     Route::post('validate-username', ['as' => 'validate_username', 'uses' => '[email protected]']); 
     Route::post('validate-email/{id?}', ['as' => 'validate_email', 'uses' => '[email protected]']); 
    }); 

}); 

}); 
1

Использование

return Redirect::back()->withErrors(['msg', 'The Message']); 

и внутри вида вызова этой

@if($errors->any()) 
<h4>{{$errors->first()}}</h4> 
@endif 
Смежные вопросы