Php Laravel路由中未知键值对的处理
我有一个应用程序正在迁移到使用Laravel,URL可以有不同的结构,例如:Php Laravel路由中未知键值对的处理,php,laravel,Php,Laravel,我有一个应用程序正在迁移到使用Laravel,URL可以有不同的结构,例如: /nightowl/search/endtimefrom/3/endtimeto/7/region/EBAY-GB/catid/ALL/pagenumber/1/ 这是: /nightowl/search/endtimefrom/3/endtimeto/7/region/EBAY-GB/keyword/frogs/ 两者都是有效的URL,当前路由器是YAF框架的一部分,路由如下: "/:tool/search/*"
/nightowl/search/endtimefrom/3/endtimeto/7/region/EBAY-GB/catid/ALL/pagenumber/1/
这是:
/nightowl/search/endtimefrom/3/endtimeto/7/region/EBAY-GB/keyword/frogs/
两者都是有效的URL,当前路由器是YAF框架的一部分,路由如下:
"/:tool/search/*"
它为控制器提供了一个数组,其中'/search/'
之后的所有内容都是键值对
我一直把头撞在墙上,想弄明白这在拉雷维尔是怎么做到的,我开始觉得这可能是不可能的
如果不是,我该怎么做才能让它成为可能 正如我在评论中提到的,您使用的URL结构可能不是Laravel在查询字符串中处理自己的参数/参数的方式。例如,CakePHP格式是
/controller/action/param:value/param:value/
等
您可能需要编写自己的代码段,以便将URL转换为Laravel能够识别的格式:
编辑:
快速浏览一下Laravel文档,我觉得它没有设置为在URL的参数中使用键/值对。请看一看上面的这个问题,以便讨论同样的问题并使用GET变量:正如我在评论中提到的,您使用的URL结构可能不是Laravel在查询字符串中如何处理自己的参数/参数。例如,CakePHP格式是
/controller/action/param:value/param:value/
等
您可能需要编写自己的代码段,以便将URL转换为Laravel能够识别的格式:
编辑:
快速浏览一下Laravel文档,我觉得它没有设置为在URL的参数中使用键/值对。请看一看上面的这个问题,以便讨论同样的问题并使用GET变量:正如我在评论中提到的,您使用的URL结构可能不是Laravel在查询字符串中如何处理自己的参数/参数。例如,CakePHP格式是
/controller/action/param:value/param:value/
等
您可能需要编写自己的代码段,以便将URL转换为Laravel能够识别的格式:
编辑:
快速浏览一下Laravel文档,我觉得它没有设置为在URL的参数中使用键/值对。请看一看上面的这个问题,以便讨论同样的问题并使用GET变量:正如我在评论中提到的,您使用的URL结构可能不是Laravel在查询字符串中如何处理自己的参数/参数。例如,CakePHP格式是
/controller/action/param:value/param:value/
等
您可能需要编写自己的代码段,以便将URL转换为Laravel能够识别的格式:
编辑:
快速浏览一下Laravel文档,我觉得它没有设置为在URL的参数中使用键/值对。看看上面的这个问题,它讨论了同样的事情,并使用GET变量来代替:Laravel没有办法以这种方式从url映射
键=>值,因此您有两个选择
1) 修改你的应用程序,使其创建
/夜猫子/搜索?endtimefrom=3&endtimeto=7®ion=EBAY-GB&catid=ALL&pagenumber=1
2) 在laravel有机会绘制路线图之前,自己分析路线。
具体来说,我指的是劫持当前请求,解析出url,将其重写为上述格式,然后在Laravel中替换当前请求实例
3) 在控制器中执行此操作(可能是最简单的)
使用route::get('{tool}/search/{params?}',的路由SearchController@doSearch)
然后,您可以在其中解析控制器
class SearchController extends BaseController {
public function doSearch($tool, $params = '')
{
$params = explode('/', $params);
$mappedParams = [];
for($i = 0; $i < count($params); $i+2){
$mappedParams[$params[$i]] = $params[$i+1];
}
//$params should now contain a key/value map
}
}
使用此路线夜猫子/search/endtimefrom/3/endtimeto/7/region/EBAY-GB/catid/ALL/pagenumber/1
在您的控制器中,您将与
$tool: nightowl
$mappedParams: Array
(
endtimefrom => 3
endtimeto => 7
region => EBAY-GB
keyword => frogs
)
$tool: nightowl
$mappedParams: Array
(
endtimefrom => 3
endtimeto => 7
region => EBAY-GB
catid => ALL
pagenumber => 1
)
Laravel没有办法以这种方式从url映射key=>value
,因此您有两种选择
1) 修改你的应用程序,使其创建
/夜猫子/搜索?endtimefrom=3&endtimeto=7®ion=EBAY-GB&catid=ALL&pagenumber=1
2) 在laravel有机会绘制路线图之前,自己分析路线。
具体来说,我指的是劫持当前请求,解析出url,将其重写为上述格式,然后在Laravel中替换当前请求实例
3) 在控制器中执行此操作(可能是最简单的)
使用route::get('{tool}/search/{params?}',的路由SearchController@doSearch)
然后,您可以在其中解析控制器
class SearchController extends BaseController {
public function doSearch($tool, $params = '')
{
$params = explode('/', $params);
$mappedParams = [];
for($i = 0; $i < count($params); $i+2){
$mappedParams[$params[$i]] = $params[$i+1];
}
//$params should now contain a key/value map
}
}
使用此路线夜猫子/search/endtimefrom/3/endtimeto/7/region/EBAY-GB/catid/ALL/pagenumber/1
在您的控制器中,您将与
$tool: nightowl
$mappedParams: Array
(
endtimefrom => 3
endtimeto => 7
region => EBAY-GB
keyword => frogs
)
$tool: nightowl
$mappedParams: Array
(
endtimefrom => 3
endtimeto => 7
region => EBAY-GB
catid => ALL
pagenumber => 1
)
Laravel没有办法以这种方式从url映射key=>value
,因此您有两种选择
1) 修改你的应用程序,使其创建
/夜猫子/搜索?endtimefrom=3&endtimeto=7®ion=EBAY-GB&catid=ALL&pagenumber=1
2) 在laravel有机会绘制路线图之前,自己分析路线。
具体来说,我指的是劫持当前请求,解析出url,将其重写为上述格式,然后在Laravel中替换当前请求实例
3) 在控制器中执行此操作(可能是最简单的)
使用route::get('{tool}/search/{params?}',的路由SearchController@doSearch)
然后,您可以在其中解析控制器
class SearchController extends BaseController {
public function doSearch($tool, $params = '')
{
$params = explode('/', $params);
$mappedParams = [];
for($i = 0; $i < count($params); $i+2){
$mappedParams[$params[$i]] = $params[$i+1];
}
//$params should now contain a key/value map
}
}
使用此路线夜猫子/search/endtimefrom/3/endtimeto/7/region/EBAY-GB/catid/ALL/pagenumber/1
在您的控制器中,您将与
$tool: nightowl
$mappedParams: Array
(
endtimefrom => 3
endtimeto => 7
region => EBAY-GB
keyword => frogs
)
$tool: nightowl
$mappedParams: Array
(
endtimefrom => 3
endtimeto => 7
region => EBAY-GB
catid => ALL
pagenumber => 1
)
Laravel没有办法以这种方式从url映射key=>value
,因此您有两种选择
1) 修改你的应用程序,使其创建
/夜猫子/搜索?endtimefrom=3&endtimeto=7®ion=EBAY-GB&catid=ALL&pagenumber=1
2) 在laravel有机会绘制路线图之前,自己分析路线。
具体的