Laravel使用url参数发布路径

Jad*_*ani 7 php routing laravel

我正面临一个大墙的幼虫路线,我似乎无法找到解决方案

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

<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> 
Run Code Online (Sandbox Code Playgroud)

这是相应的路线

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');
});
Run Code Online (Sandbox Code Playgroud)

我的问题在于,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
Run Code Online (Sandbox Code Playgroud)

我想传递一个参数并同时发布数据.

有没有办法让这项工作?我被告知Route :: post也处理GET,但它似乎不起作用.

Jad*_*ran 10

这个问题与Laravel无关

<form url="/request/{{$equipment->url}}" method="POST">
Run Code Online (Sandbox Code Playgroud)

替换urlaction

<form action="/request/{{$equipment->url}}" method="POST">
Run Code Online (Sandbox Code Playgroud)

  • 一亿比一。 (7认同)
  • 在这个问题发布的同一天,Jad回答Jad的几率是多少 (6认同)
  • 我阅读此评论并对其投了赞成票,一年后又回来尝试再次投赞成票,却发现箭头是橙色的,因为我已经投了赞成票,这种情况的可能性有多大 (2认同)

Arl*_*ind 5

HTTP POST动词不接受来自URL的参数,如GET,它从HTTP POST的Body接受它们.要获取帖子参数,请使用以下代码:

在routes.php中:

Route::post('/request', 'PagesController@request');
Run Code Online (Sandbox Code Playgroud)

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

public function request() 
{
    return Input::get('equipment_url');
}
Run Code Online (Sandbox Code Playgroud)


Ans*_*hra 5

您不能将get参数发送到post route.

但是你可以通过一个简单的技巧实现这一点,只需在表格的隐藏文件或会话中传递你的价值({{$ equipment-> url}}).

例如:

HTML

<form url="test/{{$equipment->url}}" method="POST">
    {{Input::hidden('name-of-field', $equipment->url)
    <div class="row">
        .......
    </div>
</form>
Run Code Online (Sandbox Code Playgroud)

路线

Route::post('test/{any-variable}', ['as' => 'test', 'uses' => 'TestController@test']);
Run Code Online (Sandbox Code Playgroud)

调节器

public function test()
{
    echo "<pre>";
    dd(Input::all());
}
Run Code Online (Sandbox Code Playgroud)

结果

array(1) {
           ["name-of-field"]=>
            string(5) "your value here"
          }
Run Code Online (Sandbox Code Playgroud)