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

时间:2013-08-31 04:51:52

标签: php laravel laravel-4

见这个例子:

    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        

并更改前缀而不更改路线名称。

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

3 个答案:

答案 0 :(得分:1)

您可以按照我使用的给定代码示例进行操作。按照此模型,您可以根据需要定义路径名称。

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

        ]);

    });

然后您可以使用。

生成网址
URL::route('page', array($id))

生成网址为/ admin / page / {$ id}

答案 1 :(得分:0)

我认为你所要求的并不是很合理...所以你想要在一个小组路线中命名路线。所以说IF laravel允许你设置命名组路由,如: Route::group(array('prefix' => 'admin', 'as'=>'something'), function() {...你总是可以做Redirect :: route('something / users')。然后前缀选项绝对没有用处,所以为什么不使用前缀。

话虽如此,你可以使用动作帮助函数来返回url:action('NotesAdminController@index')

答案 2 :(得分:0)

请参阅我的Laravel blog code,我根据配置变量执行此操作。

但是,我不确定是否会解决您命名路线的问题。您应该能够使用“as”数组方法将路由命名为static。

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

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

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