【问题标题】:Laravel : Redirect with data [duplicate]Laravel:使用数据重定向[重复]
【发布时间】:2016-05-28 16:30:14
【问题描述】:

我正在尝试在with() 上发送数据,但在视图中登录页面刷新但不显示任何内容。我几乎什么都试过了,我读过很多问题,几乎每一种方式都试过了。

我的控制器,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' =>  "CommonController@showLogin"]);
    Route::post('/login', ['uses' =>  "CommonController@authenticate"]);

    Route::post('/reset', "Auth\PasswordController@postEmail");
    Route::get('/password/reset/{token}', 'CommonController@showReset');
    Route::post('/password/reset', 'Auth\PasswordController@postReset');

});
    Route::get('/welcome', 'HomeController@index');

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



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

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

            Route::get('new', ['as' => 'new', 'uses' => 'AdminController@newUser']);
            Route::post('new', ['uses' => 'AdminController@newUserSave']);

            Route::get('edit-basic/{id}', ['as' => 'edit_basic', 'uses' => 'AdminController@editUserBasic']);
            Route::post('edit-basic/{id}', ['uses' => 'AdminController@editUserBasicSave']);

            Route::get('edit-historical/{id}', ['as' => 'edit_historical', 'uses' => 'AdminController@editUserHistorical']);
            Route::post('edit-historical/{id}', ['uses' => 'AdminController@editUserHistoricalSave']);

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

    });

});

如果用户名和密码错误,消息不会显示。

【问题讨论】:

    标签: php laravel laravel-5.2


    【解决方案1】:

    尝试使用$request-&gt;session()-&gt;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 和更高版本。

    【讨论】:

    • 未定义变量:视图上的请求。
    • @Gammer,请尝试更新代码。
    • 还是不行,我正在更新问题,我正在粘贴控制器的完整方法和完整视图,请看一下。
    • 你在routes.php中使用web中间件。在任何情况下,使用php artisan route:list 命令检查路由是否具有web 中间件。如果你使用文件作为会话存储,Laravel 会创建会话文件吗?如果您使用数据库存储会话数据,请检查是否创建了行。
    • 我刚刚检查过,会话正在创建文件,让我再次更新添加所有路由的问题。
    【解决方案2】:

    使用

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

    在你的视图中调用这个

    @if($errors->any())
    <h4>{{$errors->first()}}</h4>
    @endif
    

    【讨论】:

      【解决方案3】:

      将 web 添加到中间件组

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

      进入下面的代码

      Route::group(['middleware' => ['auth']], function ()
      {
      // COMMONS
      Route::get('/', 'CommonController@index');
      Route::get('/dashboard', ['as' => 'dashboard', 'uses' => 'CommonController@routeDashboard']);
      Route::get('/logout', ['as' => 'logout', 'uses' =>  "CommonController@logout"]);
      
      
      
      Route::group(['as' => 'admin::', 'middleware' => 'role:admin'], function ()
      {
      
          // USERS
          Route::group(['as' => 'users::', 'prefix' => 'users'], function ()
          {
              Route::get('/', ['as' => 'manage', 'uses' => 'AdminController@showManageUsers']);
              Route::post('handle', ['as' => 'handle', 'uses' => 'AdminController@handleUsers']);
      
              Route::get('new', ['as' => 'new', 'uses' => 'AdminController@newUser']);
              Route::post('new', ['uses' => 'AdminController@newUserSave']);
      
              Route::get('edit-basic/{id}', ['as' => 'edit_basic', 'uses' => 'AdminController@editUserBasic']);
              Route::post('edit-basic/{id}', ['uses' => 'AdminController@editUserBasicSave']);
      
              Route::get('edit-historical/{id}', ['as' => 'edit_historical', 'uses' => 'AdminController@editUserHistorical']);
              Route::post('edit-historical/{id}', ['uses' => 'AdminController@editUserHistoricalSave']);
      
              Route::post('validate-username', ['as' => 'validate_username', 'uses' => 'AdminController@validateUsername']);
              Route::post('validate-email/{id?}', ['as' => 'validate_email', 'uses' => 'AdminController@validateEmail']);
          });
      
      });
      
      });
      

      【讨论】:

        猜你喜欢
        • 2016-08-23
        • 1970-01-01
        • 1970-01-01
        • 2020-03-24
        • 2014-09-24
        • 1970-01-01
        • 2014-03-05
        • 2014-02-08
        • 2015-05-22
        相关资源
        最近更新 更多