检查 laravel 中的当前页面

Checking the current page in laravel

我有一个数据库,用于存储用户当前所在的页面,如果他们注销或被踢出,他们的位置(整数)将被存储。

我想做的是当他们重新登录时,我希望他们重定向到他们的页面位置。此外,如果他们尝试转到第 8 页,但他们只完成了第 4 页,则他们需要重新定向。

我已经在我的 PagesContoller 构造函数和前过滤器中进行了尝试,它们给出了重定向循环问题。

App::before(function($request)
{
     $position = DB::table('users')->whereId(Auth::user()->id)->pluck('position');
     return Redirect::to('mypage');

});

我需要先检查位置然后重定向。应该在 blade 内完成吗?

编辑 我的路线被包裹在前置过滤器中

Route::group(array('before' => 'auth'), function()
{

    Route::get('page1', array('as' => 'page1', 'uses' => 'PagesController@page1'));
    Route::get('page2', array('as' => 'page2', 'uses' => 'PagesController@page2'));
    Route::get('page3', array('as' => 'page3', 'uses' => 'PagesController@page3'));
    Route::get('page4', array('as' => 'page4', 'uses' => 'PagesController@page4'));
    Route::get('page5', array('as' => 'page5', 'uses' => 'PagesController@page5'));

});

通常控制器只是创建页面,传递一些变量。

   public function page1() {
        $data = array(
        'title'  => 'Page1',
        'questions'  => 'js/page1.js'

    );

    return View::make('page1')->with('data', $data);

}

您可以在 App::before 过滤器中执行此操作。但在重定向之前,您需要检查当前 URL 路径是否与您要重定向到的路径不同。因为过滤器在每个请求上都是 运行,所以如果当前页面与您要重定向到的页面相同,它将创建一个重定向循环。这样的事情应该有效:

App::before(function($request)
{
    if (Auth::check())
    {
        $position = DB::table('users')->whereId(Auth::user()->id)->pluck('position');
        $path = 'page' . $position;

        if ($request->path() !== $path)
        {
            return Redirect::route('page' . $position);
        }
    }
});

这还会检查用户是否已通过身份验证,因为它需要使用用户 ID 来查询数据库。