laravel - 动态路由怎么可能
问题描述
我想在 Laravel 6.x 中加入动态路由功能
Route::get('/', 'HomeController@index')->name('home');
Route::get('/{code}', 'DetailController@detail1')->name('detail1');
Route::get('/impress', 'ImpressController@index')->name('impress');
如果 URL 包含 4 位代码,则应调用 DetailController@detail1。如果 URL 包含 8 位或 9 位的代码,则应调用 DetailController@detail2。但是,仍然应该可以调用 imprint 控制器。
这怎么可能实现?
感谢帮助。
解决方案
您应该使用正则表达式来定义参数的约束:
Route::get('/{code89}', 'DetailController@detail1')->where('code89', '[0-9]{8,9}')->name('detail2');
Route::get('/{code4}', 'DetailController@detail1')->where('code4', '[0-9]{4}')->name('detail1');
请参阅:https ://laravel.com/docs/6.x/routing#parameters-regular-expression-constraints
按此顺序定义它们,否则将始终匹配 detail1 而永远不会匹配 detail2。
推荐阅读
- node.js - 如何使用 package.json 中定义的代理 url 作为 axios 代理?
- vue.js - Vue 2 + TinyMCE 单页混乱
- csv - 当我尝试在不选择位置的情况下导出查询时,为什么 bigquery 会自动下载我的查询?
- javascript - JS 动画循环过渡
- r - 减去上面不是 NA 的数字
- laravel - React Native,图像选择器,获取,表单数据如何发布请求图像
- javascript - 在 iframe 中清理标记与“沙盒”
- scroll - 切换到通用主题后恢复表单上缺少的垂直滚动
- laravel - Laravel 如何从模型中找到共同的朋友?
- javascript - 有没有办法在快速服务器中呈现 .jsx 组件