Laravel 7.x在路由组中使用命名路由

9 浏览
0 Comments

Laravel 7.x在路由组中使用命名路由

我正在学习Laravel,我想使用前缀来对一些路由进行分组,并给每个路由命名,使其如下所示:\n

Route::prefix('customers')->group(
    function(){
        Route::get('/', 'CustomerController@index')->name('customers.index');
        Route::get('/create', 'CustomerController@create')->name('customers.create');
        Route::post('/', 'CustomerController@store')->name('customers.store');
});

\n我想避免在每个路由名称中写入\'customers.\'。\n我尝试过使用group和name,但它无法识别路由名称前缀\'customers.\':\n

Route::group(['prefix' => 'customers', 'name' => 'customers.'],
    function(){
        Route::get('/', 'CustomerController@index')->name('index');
        Route::get('/create', 'CustomerController@create')->name('create');
        Route::post('/', 'CustomerController@store')->name('store');
});

\n我找到的另一种方法是使用as和use,但这似乎是冗余的代码,而且看起来不够清晰,实际上第一种方法看起来更清晰一些。\n

Route::group([
    'prefix' => 'customers',
    'as' => 'customers.'
    ],
    function(){
        Route::get('/', ['as'=>'index', 'uses' => 'CustomerController@index']);
        Route::get('/create', ['as'=>'create', 'uses' => 'CustomerController@create']);
        Route::post('/', ['as'=>'store', 'uses' => 'CustomerController@store']);
});

\n有更好的方法吗?

0
0 Comments

问题的原因是在Laravel 7.x版本中,使用路由组来命名路由时出现了问题。解决方法是使用资源控制器(resource controller)来简化操作,只需一行代码即可实现所需的结果。

资源控制器是Laravel框架提供的一种便捷的方式,用于处理常见的CRUD操作。通过使用资源控制器,我们可以将多个相关的路由组织在一起,并为它们命名。

在本例中,我们可以使用资源控制器来管理名为"customers"的资源。只需使用以下一行代码即可实现我们的目标:

Route::resource('customers', 'CustomerController')->only(['index', 'create', 'store']);

通过上述代码,我们定义了一个名为"customers"的资源控制器,并只保留了"index"、"create"和"store"这三个动作。这将生成以下路由:

+----------+-------------------------------+
| Method   | URI                           |
+----------+-------------------------------+
| GET|HEAD | customers                     |
| POST     | customers                     |
| GET|HEAD | customers/create              |
+----------+-------------------------------+

通过使用资源控制器,我们可以更加简洁和优雅地组织和命名我们的路由。这不仅提高了代码的可读性和可维护性,还减少了重复的代码编写工作。因此,在Laravel 7.x中,建议使用资源控制器来管理和命名路由组。

0
0 Comments

Laravel 7.x中在路由组中为路由命名的问题及解决方法

在Laravel 7.x中,我们可以在路由组中使用`->name(XYZ)`来为路由命名。这种方式可以帮助我们更好地组织和管理路由,使其更具可读性和可维护性。

问题原因:

在Laravel 7.x之前的版本中,我们通常会为每个路由单独指定一个名称。然而,当我们有多个相关的路由时,这种方式变得非常繁琐和冗长。因此,Laravel 7.x引入了路由组的名称路由功能,以简化路由的命名。

解决方法:

在Laravel 7.x中,我们可以使用`->name(XYZ)`在路由组中为所有相关的路由指定一个名称。这样做的好处是,我们可以更好地组织和管理路由,使其更具可读性和可维护性。

下面是一个示例代码,展示了在Laravel 7.x中如何使用`->name(XYZ)`来命名路由组中的路由:

Route::prefix('customers')
->name('customers.')
->group(function () {
    Route::get('/', 'CustomerController')->name('index');
    Route::get('/create', 'CustomerController')->name('create');
    Route::post('/', 'CustomerController')->name('store');
});

上述代码中,我们使用`->name('customers.')`为路由组中的所有路由指定了一个名称前缀。然后,我们使用`->name('index')`,`->name('create')`和`->name('store')`为每个具体的路由指定了唯一的名称。

这样,在使用`route('customers.index')`、`route('customers.create')`和`route('customers.store')`生成URL时,我们可以更方便地引用这些命名路由。

最终,我们可以通过以下代码检查命名路由是否正确生成:

Route::get('/test', function () {
    return route('customers.index');
});

在Laravel 7.x中,我们可以使用`->name(XYZ)`在路由组中为相关的路由指定一个名称。这种方式能够提高代码的可读性和可维护性,使路由的管理更加简洁和高效。通过以上解决方法,我们可以轻松地在Laravel 7.x中为路由组命名,提高代码的可读性和可维护性,提高开发效率。

0
0 Comments

Laravel 7.x中路由组中的命名路由问题的出现原因是在使用RESTful资源控制器时,Laravel会为您设置默认的路由并给它们命名。但是,在Laravel 7.x版本中,当使用路由组时,这些命名路由可能无法正常工作。

解决这个问题的方法是在路由组中使用路由前缀,并将命名路由放在路由组之外。

例如,如果使用以下代码设置路由组:

Route::prefix('admin')->group(function () {
    Route::name('admin.')->group(function () {
        Route::resource('users', 'UsersController');
    });
});

那么可以通过以下方式访问命名路由:

route('admin.users.index');
route('admin.users.create');
route('admin.users.store');
route('admin.users.show', $user);
route('admin.users.edit', $user);
route('admin.users.update', $user);
route('admin.users.destroy', $user);

通过这种方式,可以确保在Laravel 7.x中使用路由组时,命名路由能够正常工作。

这个问题的出现原因是Laravel 7.x版本中的路由组导致命名路由无法正常工作。解决方法是在路由组中使用路由前缀,并将命名路由放在路由组之外。通过这种方式,可以确保命名路由能够正常工作。

0