php - Laravel - root directory routing behaves strangely in a nested route group -


i have following route definition in laravel 5. when group routes in following way, seems route admin.proposals.home not work if provide "/" path, , work if trailing (like home) provided:

/**   *  routes system administrators. */ route::group(['prefix' => 'admin', 'middleware' => 'admin'], function() {     route::group(['prefix' => 'people'], function()      {         route::get('/', ['as' => 'admin.people.home', 'uses' => 'personcontroller@index']);         route::get('/profile/{username}', ['as' => 'admin.person.profile', 'uses' => 'personcontroller@view']);         route::get('/organization/{id}', ['as' => 'admin.people.organization', 'uses' => 'personcontroller@indexbyorganization']);     });      route::group(['prefix' => 'projects'], function()      {         route::get('/', ['as' => 'admin.projects.home', 'uses' => 'projectcontroller@index']);         route::get('/{projectid}', ['as' => 'admin.project.view', 'uses' => 'projectcontroller@view']);          route::group(['prefix' => 'proposals'], function()          {             //problematic line below             route::get('/home', ['as' => 'admin.proposals.home', 'uses' => 'proposalcontroller@index']);                route::get('/{proposalid}', ['as' => 'admin.proposal.view', 'uses' => 'proposalcontroller@view']);         });      });  });   

specifically, if change line:

route::get('/home', ['as' => 'admin.proposals.home',             'uses' => 'proposalcontroller@index'           ]);   

to:

route::get('/', ['as' => 'admin.proposals.home',              'uses' => 'proposalcontroller@index'           ]);   

i got error saying:

trying property of non-object (view:  ... \views\admin\projects\view.blade.php) 

but, admin.proposals.home route points controllers index() method , has nothing view.blad.php.

changing path get('/home') works perfectly.

what i'm missing?

it's route position order problem.

since have route uri admin/projects/ admin.project.home, , after admin/projects/{projectid} takes precedence on route admin/projects/proposals/

laravel takes proposals projectid.

    route::group(['prefix' => 'projects'], function()      {         route::group(['prefix' => 'proposals'], function()          {             //problematic line below             route::get('/', ['as' => 'admin.proposals.home', 'uses' => 'proposalcontroller@index']);                route::get('/{proposalid}', ['as' => 'admin.proposal.view', 'uses' => 'proposalcontroller@view']);         });         route::get('/', ['as' => 'admin.projects.home', 'uses' => 'projectcontroller@index']);         route::get('/{projectid}', ['as' => 'admin.project.view', 'uses' => 'projectcontroller@view']);        }); 

try order , let me know get. purely it's route order problem.


Comments

Popular posts from this blog

javascript - jQuery: Add class depending on URL in the best way -

caching - How to check if a url path exists in the service worker cache -

Redirect to a HTTPS version using .htaccess -