Laravel 4-资源控制器添加组前缀而不更改路由名称


Laravel 4 - resource controller adding group prefix without changing route names

参见此示例:

    Route::group(array('prefix' => 'admin'), function()
    {
        //this resolves to admin/departments
        Route::resource('departments', 'DepartmentsAdminController');
        //this resolves to admin/users
        Route::resource('users', 'UsersAdminController');
        //this resolves to admin/companies  
        Route::resource('companies', 'CompaniesAdminController');
        Route::resource('projects', 'ProjectsAdminController');
        Route::resource('jobs', 'JobsAdminController');
        Route::resource('milestones', 'MilestonesAdminController');
        Route::resource('hours', 'HoursAdminController');
        Route::resource('notes', 'NotesAdminController');
        Route::resource('briefs', 'BriefsAdminController');
        Route::resource('brief_items', 'BriefItemsAdminController');
    });

Laravel根据前缀更改路由名称,在这种情况下,前缀是admin

所以现在所有的路由名称都以admin为前缀请参阅:

    admin.users.create
    admin.users.edit

但是,如果我想将前缀更改为其他前缀,我将不得不更改整个应用程序中的路由名称。

我想要的是保持路线名称为

    users.create
    users.edit        

并且在不改变路由名称的情况下改变前缀。

有没有办法让资源控制器中的路由名称保持静态,并随时更改前缀

您可以按照我使用的给定代码示例进行操作。通过遵循此模型,您可以根据自己的喜好定义路线名称。

Route::group( [ 'prefix' => 'admin' ], function(){
        Route::resource('pages', 'PageController', [
            'names' => [
                'show' => 'page',
                'edit' => 'page.edit'
            ],
            'only' => [
                'show',
                'edit'
            ]
        ]);
    });

然后可以使用生成url。

URL::route('page', array($id))

用于生成/admin/page/{$id}的URL

我认为你的要求不是很合理。。。因此,您希望在组路由中使用命名路由。假设IF laravel允许您设置命名的组路由,如:Route::group(array('prefix' => 'admin', 'as'=>'something'), function() {...,并且您可以始终执行重定向::路由('something/users')。那个么前缀选项并没有任何作用,为什么不直接使用前缀呢。

话虽如此,您可以使用action helper函数返回url,如下所示:action('NotesAdminController@index')

请参阅我的Laravel博客代码,其中我只是基于配置变量来实现这一点。

然而,我不确定这是否能解决您命名路线的问题。您应该能够使用"as"数组方法将路由命名为静态。

$adminGroup = Config::get('admin.group');
Route::group(array('prefix' => $adminGroup, 'as'=>'something'), function() { ... });

注意:我还没有确认你可以命名一个路由组(相对于其中的特定路由)。LMK它是如何为你工作的。

最后,我使用了一个配置变量,但没有什么可以阻止该表单由数据库驱动。