在 Laravel 9 中传递多个可选参数
我正在尝试创建一条采用两个参数之一的路线。但是 dd 返回我 $b_id, null
而不是 null, $b_id
。如何只传递 b 作为参数并省略 a?
web.php
Route::get('myroute/{a?}/{b?}', [MyController::class, 'testFunction'])
->name('test.testFunction');
控制器
public function testFunction( $a = null, $b = null)
{
dd($a, $b);
// stuff
}
Ajax 调用
function test($b_id) {
$url = "{{ route('test.testFunction', ':b') }}";
$url = $url.replace(":b", $b_id);
$.ajax({
url: $url,
type: 'GET'
})}
I am trying to create a route that takes either one of two parameters. However the dd returns me $b_id, null
instead of null, $b_id
. How can I pass only b as a parameter and omit a?
web.php
Route::get('myroute/{a?}/{b?}', [MyController::class, 'testFunction'])
->name('test.testFunction');
Controller
public function testFunction( $a = null, $b = null)
{
dd($a, $b);
// stuff
}
Ajax call
function test($b_id) {
$url = "{{ route('test.testFunction', ':b') }}";
$url = $url.replace(":b", $b_id);
$.ajax({
url: $url,
type: 'GET'
})}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
目前这还不可能,但有一个解决方法。
您可以在命名数组中传递参数,并将路由更改为简单的
Route::get('myroute' ...)
:然后您可以检查参数
a
或b
存在,如果存在则正常检索它们。This is not really possible at the moment but there is a workaround.
You can pass the parameters in an named array and change the route to simply
Route::get('myroute' ...)
:Afterwards you can check if the parameters
a
orb
are present and retrieve them normally if they are.