php - Laravel路由调用控制器可变参数问题
阿神
阿神 2017-04-10 18:04:32
[PHP讨论组]
Route::get('/{model}/{name}{restrict}-{classid}{page}.html', function ($model = '', $name = '', $restrict = '', $classid = 0, $page = 1) {
    // function
})->where(['model'=>'android|ipad|iphone|mac|tv', 'name'=>'[\w]+', 'restrict'=>'-hot|-best|', 'classid'=>'[0-9]+', 'page'=>'-[0-9]+|']);

路由规则如上,因为restrict参数可以为空,所以当url中不存在restrict时,参数中就不会传递$restrict了,结果导致第三个参数传递的是classid,有什么办法解决这个问题吗?
另外这个路由规则在老版本的laravel中是支持的,即使没有匹配到restrict,参数列表也是传递$restrict的。

阿神
阿神

闭关修行中......

全部回复(1)
PHPz
Route::get('/{model}/{name}{restrict?}-{classid?}{page?}.html', function ($model = '', $name = '', $restrict = '', $classid = 0, $page = 1) {
    // function
})->where(['model'=>'android|ipad|iphone|mac|tv', 'name'=>'[\w]+', 'restrict'=>'-hot|-best|', 'classid'=>'[0-9]+', 'page'=>'-[0-9]+|']);

应该一个 ? 就能解决问题吧

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号