关于php:Laravel post route 带url参数 | 珊瑚贝

Laravel post route with url parameters


我正面临着一大堵幼虫路线,我似乎找不到解决方案

我在视图模板中有这个表单

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<form url=“/request/{{$equipment->url}}” method=“POST”>
                   
                       
                            Start Date:
                            <input type=“date” required name=“starting_date” value=“” placeholder=“From” class=“request-input request-date mb10”>
                       
                       
                            End Date:
                            <input type=“date” required name=“ending_date” value=“” placeholder=“To” class=“request-input request-date mb10”>
                       
                       
                            Quantity
                            <input type=“number” required name=“quantity” value=“” placeholder=“Quantity” class=“request-input mb10”>
                       
                   
                   
                       
                            Voltage
                            <input type=“number” required name=“voltage” value=“” placeholder=“Voltage” class=“request-input mb10”>
                       
                       
                            Param 1
                            <input type=“text” required name=“param_1” value=“” placeholder=“Parameter” class=“request-input mb10”>
                       
                       
                            Param 2
                            <input type=“text” required name=“param_2” value=“” placeholder=“Parameter” class=“request-input mb10”>
                       
                   
                   
                       
                            <button class=“btn btn-block button-orange”>Get quotes now</button>
                       
                   
                </form>

这是对应的路线

1
2
3
4
5
6
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 参数。

即它抛出错误

1
2
3
4
5
6
7
8
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

我想同时传递一个参数和发布数据。

有没有办法让这个工作?有人告诉我 Route::post 也可以处理 GET,但它似乎不起作用。


问题与 Laravel 无关

1
<form url=“/request/{{$equipment->url}}” method=“POST”>

将 url 替换为 action

1
<form action=“/request/{{$equipment->url}}” method=“POST”>
  • Jad 在发布此问题的同一天回答 Jad 的几率是多少
  • 万亿比1。
  • 我阅读此评论并对其进行投票,然后在一年后回来并尝试再次对其进行投票,结果发现箭头是橙色的,因为我已经投票了


您不能将获取参数发送到发布路由。

但是您可以通过一个简单的技巧来实现,只需在表单的隐藏字段或会话中传递您的值 ({{$equipment->url}})。

例如:

html

1
2
3
4
5
6
<form url=“test/{{$equipment->url}}” method=“POST”>
    {{Input::hidden(‘name-of-field’, $equipment->url)
   
        …….
   
</form>

路线

1
Route::post(‘test/{any-variable}’, [‘as’ => ‘test’, ‘uses’ => ‘TestController@test’]);

控制器

1
2
3
4
5
public function test()
{
    echo“[cc lang=”php“]”;
    dd(Input::all());
}

结果

1
2
3
4
array(1) {
           [“name-of-field”]=>
            string(5)“your value here”
          }


  • 我认为这个答案也没有抓住重点。您不能使用 POST 发送获取参数(QUERY STRING),但 OP 发布的路由使用 URI 段。 Laravel 很好地解决了它们,所以我看不到任何问题。


HTTP POST 动词不接受来自 URL 的参数,如 GET,它接受来自 HTTP POST 正文的参数。要获取发布参数,请使用以下代码:

在 routes.php:

1
Route::post(‘/request’, ‘PagesController@request’);

并在您的 PagesController 中使用以下输入方法之一访问表单输入

1
2
3
4
public function request()
{
    return Input::get(‘equipment_url’);
}
  • 问题是我希望 url 改变并显示设备 URL,这就是我使用路由参数的原因
  • @JadSalhani 那么你将不得不使用 GET
  • 这样做的动机是什么?在我的情况下,将参数作为 URL 的一部分传递会使事情变得更加方便:(
  • 我认为这个答案没有抓住重点。是的,POST 不接受 QUERY STRING 参数,但它接受 URI 段,这就是 OP 发布的路由所使用的。


来源:https://www.codenong.com/31872422/

微信公众号
手机浏览(小程序)

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_9324.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
0
分享到:
没有账号? 忘记密码?