2016-11-09 2 views
1

У меня есть это приложение в Laravel 5.3 на моей локальной машине, которая использует два controllersрешения Laravel 5,3 маршрута конфликт имен

AdminUsersController и AgentUsersController

Теперь я установил routes следующие способы:

Route::group(['middleware' => 'admin'], function(){ 


    Route::get('/admin', function(){ 
    return view('admin.index'); 
    }); 


    Route::resource('admin/users', 'AdminUsersController'); 

    Route::resource('admin/posts', 'AdminPostsController'); 
}); 


Route::group(['middleware' => 'agent'], function(){ 

    Route::get('/agent', function(){ 
    return view('agent.index'); 
    }); 

    Route::resource('agent/posts', 'AgentPostsController'); 

}); 

Когда я list маршруты в этом php artisan route:list I g и др следующие из приходят:

+--------+-----------+-------------------------+---------------+------------------------------------------------------------------------+--------------+ 
| Domain | Method | URI      | Name   | Action                 | Middleware | 
+--------+-----------+-------------------------+---------------+------------------------------------------------------------------------+--------------+ 
|  | GET|HEAD |/      |    | Closure                | web   | 
|  | GET|HEAD | admin     |    | Closure                | web,admin | 
|  | GET|HEAD | admin/posts    | posts.index | App\Http\Controllers\[email protected]      | web,admin | 
| 
|  | GET|HEAD | agent/posts    | posts.index | App\Http\Controllers\[email protected]      | web,agent | 
|  | POST  | agent/posts    | posts.store | App\Http\Controllers\[email protected]      | web,agent | 

Обратите внимание, что URI agent/posts имеет nameposts.index и что URI admin/posts имеет nameposts.index.

Сейчас в моем blade template, когда я добавил route для admin user, так вот {{route('posts.index')}}. Я получаю URI mydomain/agent/posts вместо mydomain/admin/posts. Как я могу дать route в blade знать, какой из URIs выбрать.

Я знаю, что я также могу сделать URL('/admin/posts'), чтобы выбрать правильный вариант, но мне интересно, можно ли использовать метод route.

ответ

1

Да, вы можете переопределить имена одного из ваших контроллеров ресурсов! Просто передайте другой аргумент методу ресурса, предоставив массив с ключевым словом «имена» в качестве индекса и другого массива в качестве значения:

Route::resource('agent/posts', 'AgentPostsController', ['names' => [ 
    'index' => 'agent.posts.index' 
]]); 
+0

Почему «laravel» не может разрешить это на основе моей «аутентификации роли» добавлен в приложение. –

+0

@udoyen Есть способы изменить маршрутизацию для разных ролей/типов пользователей, хотя это не то, что вы просили. – manniL