Nomes de rotas de recursos do Laravel 4 no grupo

O Laravel 4 tem um efeito colateral infeliz nos nomes que são criados para rotas de recursos dentro de grupos com prefixos de grupo parametrizados.

Por exemplo, digamos que você tenha a seguinte configuração de rota;

Route::group(['prefix' => 'continent/{continent}', function() {
Route::resource('country', 'CountryController');
}

Todos os nomes de rota do recurso são prefixados por continent/{continent}.Um patch foi criado para o Laravel para atribuir um nome de rota por caminho de recurso;

Route::group(['prefix' => 'continent/{continent}', function() {
Route::resource('country', 'CountryController', [
'names' => [
'index' => 'country.index',
'create' => 'country.create',
'store' => 'country.store',
'show' => 'country.show',
'edit' => 'country.edit',
'update' => 'country.update',
'destroy' => 'country.destroy'
]
]);
}

Isso pode ser irritante se você precisar nomear todas as rotas para o controlador de recursos. Em vez disso, coloque esta função no topo de seu arquivo de rotas e salve algum trabalho braçal;

$prefixedResourceNames = function($prefix) {
return [
'index' => $prefix . '.index',
'create' => $prefix . '.create',
'store' => $prefix . '.store',
'show' => $prefix . '.show',
'edit' => $prefix . '.edit',
'update' => $prefix . '.update',
'destroy' => $prefix . '.destroy'
];
};

Agora, para o seu recurso agrupado, é tão difícil quanto fazer;

Route::group(['prefix' => 'continent/{continent}', function() use ($prefixedResourceNames) {
Route::resource('country', 'CountryController', ['names' => $prefixedResourceNames('country')]);
}

Isso agora deve remover a continent/{continent}parte do esquema de rota e ter apenas o prefixo .action.