gpt4 book ai didi

php - Laravel 5 路由中的多个可选参数

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

我对 Laravel 5 有问题,准确地说,我找不到解决方案。
在 C# (ASP.NET MVC) 中很容易解决。
例如,我有这些路由(为了简单起见,我只输入路由内容和函数头)

/{category}/Page{page}
/Page{page}
/{category}

该函数在 Product Controller 中定义。
函数头看起来像这样:
public function list($page = 1, $category = null)

问题是,每当我只输入一个参数时,它不会按照我在路由中设置的名称发送参数值,而是按函数参数顺序推送值。
所以,当我打开/Page1 时,它工作正常,值 1 被发送到 $page 变量,
但是当我访问/Golf(当场制作)时,它也会将值发送到 $page 变量。
任何可能的想法如何避免这种情况,或者我真的需要制作不同的功能来处理这些情况吗?

在 C# 中,它正确发送值,并保留未定义参数的默认值。

希望你能给我一个答案。
提前谢谢你,祝你有美好的一天:)

最佳答案

因此,正如您所见,参数是按顺序而不是按名称传递给函数的。

为了实现你想要的,你可以从你的函数中访问这些路由参数,方法是像这样提示请求对象:

class ProductController extends Controller
{
function list(Request $request){ # <----------- don't pass the params, just the request object

$page = $request->route('page'); # <--- Then access by name
$category = $request->route('category');

dd("Page: $page | Category: $category");
}
}

然后当然你会设置你的所有 3 条路线来点击相同的 Controller 方法:
Route::get('/{category}/Page{page}', 'ProductController@list');
Route::get('/Page{page}', 'ProductController@list');
Route::get('/{category}', 'ProductController@list');

希望这可以帮助..!

关于php - Laravel 5 路由中的多个可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43749043/

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