【问题标题】:Checking the current page in laravel在 laravel 中检查当前页面
【发布时间】:2015-04-14 11:53:13
【问题描述】:

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

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

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

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

});

我需要先检查位置,然后再进行重定向。这应该在刀片中完成吗?

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

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);

}

【问题讨论】:

  • 你能告诉我们你的路线吗?特别是控制位置的那个。

标签: redirect laravel routes position


【解决方案1】:

您可以在 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 来查询数据库。

【讨论】:

  • 一个小问题错误未定义属性:Illuminate\Http\Request::$path - 我尝试使用 \Illuminate\Http\Request 但仍然没有工作
  • 对不起,我的错误,$request->path 应该是$request->path(),因为path 是一个方法,而不是一个属性。我会更新答案。
猜你喜欢
  • 1970-01-01
  • 2011-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多