命名路由组中的资源控制器导致路由名称问题?

时间:2015-10-08 09:27:06

标签: php routing laravel-5 laravel-routing

我在命名路由组中有一个资源控制器,如下所示:

Route::group(['middleware' => 'ldapauth', 'namespace' => 'Admin', 'prefix' => 'admin', 'as' => 'admin.'], function () {
    // other routes ...

    Route::resource('institution', 'InstitutionController');

});

我得到了额外的"管理员"对于属于资源控制器路由的路由名称,请参见此处:

+-------------------------------------+--------------------------------+
| URI                                 | Name                           |
+-------------------------------------+--------------------------------+
| admin                               | admin.dashboard                |
| admin/email/{id}                    | admin.email.show               |
| admin/institution                   | admin.admin.institution.index  |
| admin/institution                   | admin.admin.institution.store  |
| admin/institution/contact           | admin.institution.contact      |
| admin/institution/create            | admin.admin.institution.create |
| admin/institution/{institution}     | admin.                         |
| admin/institution/{institution}     | admin.admin.institution.destroy|
| admin/institution/{institution}     | admin.admin.institution.update |
| admin/institution/{institution}     | admin.admin.institution.show   |
| admin/institution/{institution}/edit| admin.admin.institution.edit   |

任何指导都将不胜感激。我是否需要删除组外的资源控制器,然后重新应用中间件等?

编辑:我想在路由组中保留命名的'as' => 'admin.',因此我不需要为组中的所有路由添加前缀。这可能吗?

1 个答案:

答案 0 :(得分:0)

管理这个的最好方法是,在控制器中传递中间件,向控制器添加一个构造,就像这样:

class InstitutionController extends Controller {


    public function __construct()
    {
        $this->middleware('ldapauth');
    }

}

之后您可以创建资源:

Route::resource('admin/institution', 'Admin\InstitutionController');

现在您可以使用以下方式访问路线:

{!! Form::open(['url' => route('admin.institution.contact')]) !!}

此外,您可以使用php artisan route:list查看所有当前路线。你会看到类似的路由输出。