Laravel Undefined offset:1

时间:2015-04-11 04:10:53

标签: php laravel laravel-5

我想在访客尝试访问主页时添加身份验证。我尝试访问主页时收到错误。

Laravel版本:Laravel 5

routes.php错误版本:

Route::get('auth/login', 'Auth\AuthController@getLogin');  
Route::post('auth/login', 'Auth\AuthController@postLogin');  
Route::get('auth/logout', 'Auth\AuthController@getLogout');
Route::get('auth/register', 'Auth\AuthController@getRegister'); 
Route::post('auth/register', 'Auth\AuthController@postRegister'); 
Route::get('/', ['middleware' => 'auth', function()
{
    Route::get('/', 'HomeController@index'); 
    Route::get('pages/{id}', 'PagesController@show');  
    Route::post('comment/store', 'CommentsController@store'); 
}]);

Route::group(['prefix' => 'admin', 'namespace' => 'Admin', 'middleware' =>     'auth'], function()  
{
  Route::get('/', 'AdminHomeController@index');
  Route::resource('pages', 'PagesController');
  Route::resource('comments', 'CommentsController');
});

错误记录

at HandleExceptions->handleError('8', 'Undefined offset: 1',   'G:\wamp\www\Laravel5\vendor\compiled.php', '7377', array('request' => object(Request), 'this' => object(Route))) in compiled.php line 7377

正确的原始版本

Route::get('/', 'HomeController@index');  
Route::get('pages/{id}', 'PagesController@show');  
Route::post('comment/store', 'CommentsController@store'); 
Route::get('auth/login', 'Auth\AuthController@getLogin');  
Route::post('auth/login', 'Auth\AuthController@postLogin');  
Route::get('auth/logout', 'Auth\AuthController@getLogout');
Route::get('auth/register', 'Auth\AuthController@getRegister'); 
Route::post('auth/register', 'Auth\AuthController@postRegister'); 
Route::group(['prefix' => 'admin', 'namespace' => 'Admin', 'middleware' =>  'auth'], function()  
{
  Route::get('/', 'AdminHomeController@index');
  Route::resource('pages', 'PagesController');
  Route::resource('comments', 'CommentsController');
});

更新 我知道解决问题但不知道为什么?您可以看到我声明了具有身份验证的路由组的最后四行。当我测试那部分时,我已登录。现在我注销了/admin前缀,当我尝试访问根URL时,我可以看到登录页面。

所以我的想法是为用户编写一个guestAuth中间件,为管理员编写一个adminAuth中间件。 你有更好的想法吗?

2 个答案:

答案 0 :(得分:2)

尝试 -

Route::group(['middleware' => 'auth'], function()
{
    Route::get('/', 'HomeController@index'); 
    Route::get('pages/{id}', 'PagesController@show');  
    Route::post('comment/store', 'CommentsController@store'); 
});

检查here

答案 1 :(得分:1)

是这行代码吗?

Route::get('/', ['middleware' => 'auth', function()
{
    Route::get('/', 'HomeController@index'); 
    Route::get('pages/{id}', 'PagesController@show');  
    Route::post('comment/store', 'CommentsController@store'); 
}]);

应该吗?

Route::get('/', ['middleware' => 'auth'], function()
    {
        Route::get('/', 'HomeController@index'); 
        Route::get('pages/{id}', 'PagesController@show');  
        Route::post('comment/store', 'CommentsController@store'); 
    });