laravel - Laravel 路由组前缀 - 变量不起作用
问题描述
在 web.php 中:
Route::group(['middleware'=>['checklang','checkmoney']],function(){
Route::get('/', function () {
return redirect('/'.session()->get('lang'));
});
Route::group([
'prefix' => '{locale}',
'where'=>['locale'=>'[a-zA-Z]{2}']],
function() {
Route::get('/tour/{id}','HomeController@getTours');
});
});
在 HomeContoller 中:
public function getTours($id){
dd($id);
}
尝试访问 url 时:example.com/en/tour/5 得到结果
en
,但应该是5
问题出在哪里以及如何解决?
解决方案
您的路线有 2 个变量,{locale}
并且{id}
,但您的 Controller 方法仅引用其中一个。您需要同时使用两者:
web.php
:
Route::group(['prefix' => '{locale}'], function () {
...
Route::get('/tour/{id}', 'HomeController@getTours');
});
HomeController.php
public function getTours($locale, $id) {
dd($locale, $id); // 'en', 5
}
注意:定义的顺序很重要;{locale}
(en){id}
位于 5 之前,因此请确保以正确的顺序定义它们。
推荐阅读
- angular - 在 Jenkins 中运行量角器测试 (CloudBees Jenkins Enterprise)
- c# - Unity WebGL 与第 3 部分 API
- javascript - 如何在 ES6 Map 中获得深度相等的键?替代使用复杂对象作为 ES6 Map 键?
- javascript - 如何按顺序执行四个异步函数?
- php - 如何在 woocommerce 结帐和确认电子邮件中列出商品价格?
- php - 如何调查 Apache 中的 PHP 崩溃?
- spring - FlatfileItemWriter 编码格式问题
- typescript - Ts-Jest Typescript 诊断:错误 TS2307:找不到模块
- apache - 但是对于许多参数,例如 apache isis 中的姓名、姓氏、出生日期等(仅类参数),您如何做同样的事情?
- rest - 如何为 RAD 服务器身份验证调用配置 TRESTRequest?