检查 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 来查询数据库。
我有一个数据库,用于存储用户当前所在的页面,如果他们注销或被踢出,他们的位置(整数)将被存储。
我想做的是当他们重新登录时,我希望他们重定向到他们的页面位置。此外,如果他们尝试转到第 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 来查询数据库。