热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

phplaravel用的多不,phpLaravel多个可选参数不起作用

在使用带有2个可选参数的路线时,Route::get(abc-{abc_id?}xyz-{xyz_id?},function($abc_id0,$xyz_id0){return\

在使用带有2个可选参数的路线时,

Route::get('/abc-{abc_id?}/xyz-{xyz_id?}', function($abc_id=0, $xyz_id=0)

{

return "\n hello ... World";

});

要求

/abc-1/xyz-15 - Hello World

/abc-1/xyz - Hello World

但对于

/abc-/xyz-15 - 404

/abc/xyz-15 - 404

为什么第一个可选参数无法正常工作?是否有其他解决方案?

请注意,两个参数都在url中,而不是作为get属性

解决方法:

第一个可选参数之后的所有内容都必须是可选的.如果在可选参数之后需要路由的一部分,则该参数变为必需.

在您的情况下,由于路由的/ xyz-部分是必需的,并且位于第一个可选参数之后,因此该第一个可选参数成为必需.

一种选择是将id前缀作为参数的一部分,并使用模式匹配来实施路由格式.然后,您需要从参数值中解析出实际的ID.

Route::get('/{abc_id?}/{xyz_id?}', function($abc_id = 0, $xyz_id = 0) {

$abc_id = substr($abc_id, 4) ?: 0;

$xyz_id = substr($xyz_id, 4) ?: 0;

return "\n hello ... World";

})->where([

'abc_id' => 'abc(-[^/]*)?',

'xyz_id' => 'xyz(-[^/]*)?'

]);

标签:laravel-routing,laravel,laravel-5,php,routing

来源: https://codeday.me/bug/20191028/1951299.html



推荐阅读
author-avatar
林伯爵
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有