gpt4 book ai didi

Laravel 5.6其他Route::resource()参数

转载 作者:行者123 更新时间:2023-12-04 10:34:15 24 4
gpt4 key购买 nike

我想知道如何在不使用查询字符串的情况下向Laravel的路由资源添加其他参数。

我使用所有内置资源创建了一个 Controller (CustomerController),然后添加了以下路由:

Route::resource('customers', 'CustomerController');

我想做的是在不创建自定义路由或使用查询字符串的情况下,向一些默认资源中添加其他参数。例如:

带有可选参数(索引)的默认资源:
public function index($page = 0)
{
//...
}

所需的URL:
http://www.example.com/customers
http://www.example.com/customers/{page}

我尝试了以下操作,但遇到未找到的异常(NotFoundHttpException):
Route::resource('customers', 'CustomerController')->parameters([
'index' => 'page'
]);

这可能吗?如果是这样,我该怎么做?

最佳答案

资源 Controller 必须实现一组定义的方法,然后由路由器映射到相应的HTTP动词和路径。这些方法,路径和动词构成了无法调整的契约的一部分,否则使用实现了资源 Controller 的Laravel应用程序将是一件令人头疼的事情。

资源 Controller 擅长在所有Laravel应用程序中提供相同的体验,如果您的应用程序需要资源 Controller 不支持的开箱即用的行为,则表明您不应该使用它们,而应该手动注册路由。

如果只有一条路由需要实现自定义行为,则可以注册某些方法而不是全部方法,然后选择将自定义路由注册到Resource Controllers方法,例如:

Route::resource('customers', 'CustomerController')->except([
'index'
]);

Route::get('/customers/{page?}', 'CustomerController@index');

Resource Controllers的文档涵盖了 exceptonly

关于Laravel 5.6其他Route::resource()参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49867423/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com