Laravel post 参数为 url 的路线
Laravel post route with url parameters
我面临着一堵巨大的幼虫路由墙,我似乎找不到解决方案
我在视图模板中有此表单
<form url="/request/{{$equipment->url}}" method="POST">
<div class="row">
<div class="col-sm-4">
<div class="mt10">Start Date:</div>
<input type="date" required name="starting_date" value="" placeholder="From" class="request-input request-date mb10">
</div>
<div class="col-sm-4">
<div class="mt10">End Date:</div>
<input type="date" required name="ending_date" value="" placeholder="To" class="request-input request-date mb10">
</div>
<div class="col-sm-4">
<div class="mt10">Quantity</div>
<input type="number" required name="quantity" value="" placeholder="Quantity" class="request-input mb10">
</div>
</div>
<div class="row">
<div class="col-sm-4">
<div class="mt10">Voltage</div>
<input type="number" required name="voltage" value="" placeholder="Voltage" class="request-input mb10">
</div>
<div class="col-sm-4">
<div class="mt10">Param 1</div>
<input type="text" required name="param_1" value="" placeholder="Parameter" class="request-input mb10">
</div>
<div class="col-sm-4">
<div class="mt10">Param 2</div>
<input type="text" required name="param_2" value="" placeholder="Parameter" class="request-input mb10">
</div>
</div>
<div class="row">
<div class="col-sm-12">
<button class="btn btn-block button-orange">Get quotes now</button>
</div>
</div>
</form>
这是对应的路线
Route::group([ 'middleware' => 'rental'], function(){
Route::get('/my-requests/{readby_url}', 'PagesController@requests');
Route::post('/request/{equipment_url}', 'PagesController@request');
Route::post('/request/create', 'RequestsController@create');
Route::post('/request/accept', 'RequestsController@accept');
});
我的问题是 Route::post('/request/{equipment_url}', 'PagesController@request');
,因为当方法设置为 post.
时,它似乎不接受 url 参数
即抛出错误
MethodNotAllowedHttpException in RouteCollection.php line 201:
in RouteCollection.php line 201
at RouteCollection->methodNotAllowed(array('GET', 'HEAD')) in RouteCollection.php line 188
at RouteCollection->getRouteForMethods(object(Request), array('GET', 'HEAD')) in RouteCollection.php line 140
at RouteCollection->match(object(Request)) in Router.php line 746
at Router->findRoute(object(Request)) in Router.php line 655
at Router->dispatchToRoute(object(Request)) in Router.php line 631
at Router->dispatch(object(Request)) in Kernel.php line 237
我想同时传递一个参数和post数据
有没有办法让它工作?有人告诉我 Route::post 也可以处理 GET,但它似乎不起作用。
HTTP POST 动词不像 GET 那样接受来自 URL 的参数,它接受来自 HTTP POST 主体的参数。要获取 post 参数,请使用以下代码:
在routes.php中:
Route::post('/request', 'PagesController@request');
并在您的 PagesController 中使用如下输入法之一访问表单输入
public function request()
{
return Input::get('equipment_url');
}
您不能向 post 路由发送获取参数。
但是你可以通过一个简单的技巧来实现,只需在表单的隐藏字段或会话中传递你的值 ({{$equipment->url}})。
例如:
html
<form url="test/{{$equipment->url}}" method="POST">
{{Input::hidden('name-of-field', $equipment->url)
<div class="row">
.......
</div>
</form>
路线
Route::post('test/{any-variable}', ['as' => 'test', 'uses' => 'TestController@test']);
控制器
public function test()
{
echo "<pre>";
dd(Input::all());
}
结果
array(1) {
["name-of-field"]=>
string(5) "your value here"
}
问题与Laravel
无关
<form url="/request/{{$equipment->url}}" method="POST">
将url
替换为action
<form action="/request/{{$equipment->url}}" method="POST">
我面临着一堵巨大的幼虫路由墙,我似乎找不到解决方案
我在视图模板中有此表单
<form url="/request/{{$equipment->url}}" method="POST">
<div class="row">
<div class="col-sm-4">
<div class="mt10">Start Date:</div>
<input type="date" required name="starting_date" value="" placeholder="From" class="request-input request-date mb10">
</div>
<div class="col-sm-4">
<div class="mt10">End Date:</div>
<input type="date" required name="ending_date" value="" placeholder="To" class="request-input request-date mb10">
</div>
<div class="col-sm-4">
<div class="mt10">Quantity</div>
<input type="number" required name="quantity" value="" placeholder="Quantity" class="request-input mb10">
</div>
</div>
<div class="row">
<div class="col-sm-4">
<div class="mt10">Voltage</div>
<input type="number" required name="voltage" value="" placeholder="Voltage" class="request-input mb10">
</div>
<div class="col-sm-4">
<div class="mt10">Param 1</div>
<input type="text" required name="param_1" value="" placeholder="Parameter" class="request-input mb10">
</div>
<div class="col-sm-4">
<div class="mt10">Param 2</div>
<input type="text" required name="param_2" value="" placeholder="Parameter" class="request-input mb10">
</div>
</div>
<div class="row">
<div class="col-sm-12">
<button class="btn btn-block button-orange">Get quotes now</button>
</div>
</div>
</form>
这是对应的路线
Route::group([ 'middleware' => 'rental'], function(){
Route::get('/my-requests/{readby_url}', 'PagesController@requests');
Route::post('/request/{equipment_url}', 'PagesController@request');
Route::post('/request/create', 'RequestsController@create');
Route::post('/request/accept', 'RequestsController@accept');
});
我的问题是 Route::post('/request/{equipment_url}', 'PagesController@request');
,因为当方法设置为 post.
即抛出错误
MethodNotAllowedHttpException in RouteCollection.php line 201:
in RouteCollection.php line 201
at RouteCollection->methodNotAllowed(array('GET', 'HEAD')) in RouteCollection.php line 188
at RouteCollection->getRouteForMethods(object(Request), array('GET', 'HEAD')) in RouteCollection.php line 140
at RouteCollection->match(object(Request)) in Router.php line 746
at Router->findRoute(object(Request)) in Router.php line 655
at Router->dispatchToRoute(object(Request)) in Router.php line 631
at Router->dispatch(object(Request)) in Kernel.php line 237
我想同时传递一个参数和post数据
有没有办法让它工作?有人告诉我 Route::post 也可以处理 GET,但它似乎不起作用。
HTTP POST 动词不像 GET 那样接受来自 URL 的参数,它接受来自 HTTP POST 主体的参数。要获取 post 参数,请使用以下代码:
在routes.php中:
Route::post('/request', 'PagesController@request');
并在您的 PagesController 中使用如下输入法之一访问表单输入
public function request()
{
return Input::get('equipment_url');
}
您不能向 post 路由发送获取参数。
但是你可以通过一个简单的技巧来实现,只需在表单的隐藏字段或会话中传递你的值 ({{$equipment->url}})。
例如:
html
<form url="test/{{$equipment->url}}" method="POST">
{{Input::hidden('name-of-field', $equipment->url)
<div class="row">
.......
</div>
</form>
路线
Route::post('test/{any-variable}', ['as' => 'test', 'uses' => 'TestController@test']);
控制器
public function test()
{
echo "<pre>";
dd(Input::all());
}
结果
array(1) {
["name-of-field"]=>
string(5) "your value here"
}
问题与Laravel
无关<form url="/request/{{$equipment->url}}" method="POST">
将url
替换为action
<form action="/request/{{$equipment->url}}" method="POST">