Laravel 5 路由参数不发送
Posted
技术标签:
【中文标题】Laravel 5 路由参数不发送【英文标题】:Laravel 5 route parameters not send 【发布时间】:2015-06-25 16:35:17 【问题描述】:使用 Laravel 5,我无法设置获取路由参数。
我的路线是这样设置的:
Route::get('test', 'TestController@test');
我的 TestController 看起来像这样:
public function test(Request $request)
var_dump($request->input('foo'));
当我使用参数浏览到该路线时
/test?foo=bar
结果为 NULL。
谁能告诉我我做错了什么?
Input::get('foo') 语法也不起作用(甚至在 L5 的文档中也没有提到)。
更新:
我使用 Apache 作为网络服务器。
我也试过
$request->get('foo')
还有这样的路线
Route::get('test/foo?', 'TestController@test');
使用相同的 URL 仍然为空。
更新 2:
L5 的文档给出了这样的路由示例:
/test/bar
而不是
/test?foo=bar
在 L4 中,可以使用 GET 方式浏览路线
/test?foo=bar&id=2&user=admin
或更改顺序
/test?id=2&user=admin&foo=bar
同一条路线
Route::get('test', 'TestController@test');
你所要做的就是得到它
Input::get('user')
但是使用 L5,当您必须在路由中使用斜杠时,将无法更改参数的顺序,例如
Route::get('test/id/user/foo', 'TestController@test');
这真的是 L5 路线的大降级吗?
【问题讨论】:
我不知道为什么它对你不起作用,但这里证明你可以使用\Illuminate\Http\Request
访问GET
参数:prntscr.com/6viqmv。也许你的 apache 设置有问题。
那真的会在浏览器中返回“bar”吗?
抱歉,在手机上查看了屏幕,没有看到完整的图像。这是在 apache 上运行 Laravel 的 versin 5 吗?
【参考方案1】:
问题出在.htaccess
文件上,我使用了一个编辑过的文件,但没有发送参数。
使用框架附带的默认 .htaccess
文件,一切正常!
【讨论】:
能否请您从您的.htaccess
文件中提取详细信息。可能对未来有用
我遇到了同样的问题。你能详细说明一下htaccess解决方案吗?
您能否详细说明.htaccess
的解决方案?
我没有编辑我的.htaccess
,但仍然无法正常工作。我正在使用 Lumen。【参考方案2】:
在 laravel 5 中,您可以像这样将参数放入控制器方法中:
public function test(Request $request, $foo)
带路由 - Route::get('test/foo', 'TestController@test');`
【讨论】:
这仅适用于 /test/bar,但不适用于 /test?foo=bar。我更新了我的问题,解释了为什么这不是一个好的解决方案。 尝试使用$_GET
数组来获取您的值。
这只给了我输入的完整路线。顺便说一句,您不需要在 laravel 中使用 $_GET。【参考方案3】:
你会试试这个吗?
use Request;
public function test(Request $request)
var_dump($request->get('foo'));
【讨论】:
试过了,结果还是空。我会更新我的问题。 并将路由更改为 Route::get('test', 'TestController@test');您不必为 GET 请求使用路由的参数。 我也试过了,还是不行。是否可以在您的机器上设置一个测试以确保它真的是 laravel 在这里不起作用? 也许您可以使用新的 laravel 安装程序对其(服务器)进行测试。 我有两个使用 laravel 的设置,一个是用 composer 安装的,另一个是用 laravel 安装程序 1.2.0 安装的 - 两者都没有区别,不起作用。以上是关于Laravel 5 路由参数不发送的主要内容,如果未能解决你的问题,请参考以下文章