我有一个简单的html表单,正在路由文件中调用一个控制器,但在提交时我得到以下错误:
Symfony'Component'Debug'Exception'FatalErrorException thrown with message "Call to undefined method Illuminate'Http'Request::post()"
Stacktrace:
#1 Symfony'Component'Debug'Exception'FatalErrorException in /vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:205
#0 Illuminate'Exception'Handler:handleShutdown in <#unknown>:0
在这个特殊的网站上,我有很多表格,甚至更多的路线,除了这一个,其他的工作都有。我一次又一次地寻找一些打字错误或可能导致它失败的东西,但一无所获。
我的表格是:
<form class="form-horizontal" action="/warehouse/add_pallet" method="post" accept-charset="utf-8" role="form">
<div class="row">
<div class="col-xs-12">
<div class="pm-well">
<h2>Scan Add Pallet</h2>
<div class="form-group">
<label class="col-xs-12 col-sm-2" for="pallet_location">Location: </label>
<div class="col-xs-12 col-sm-8">
<input type="text" class="form-control" name="pallet_location" id="pallet_location">
</div>
</div>
<div class="form-group">
<label class="col-xs-12 col-sm-2" for="sku">sku: </label>
<div class="col-xs-12 col-sm-8">
<input type="text" class="form-control" name="sku" id="sku">
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<input type="submit" class="pm-btn pm-btn-confirmation medium-btn" value="Add Pallet">
</div>
</div>
</form>
在我的路线文件中,我有:
Route::post('warehouse/add_pallet', 'PalletController@insert');
作为一个控制测试,我只设置了一个直接的PHP(没有Laravel或任何PHP框架)测试站点,并复制了表单并更改了表单操作,简单地指向另一个PHP脚本,在那里我可以回显请求方法和发布数据,这正如预期的那样。
在这一点上我被难住了。这可能是个bug吗?我看到了很多关于Symfony的请求::[方法]不起作用的问题的其他帖子。
我猜您已经在控制器中调用了一个方法post()作为Request::post(。您应该使用Input::get()。Facade Input中的关键字get未绑定到$_get全局数组。因此,无论您是使用GET还是POST方法提交数据,都应该使用Input::GET('key')来检索它们。但是,为了确保您正在获取的数据是通过POST方法提交的,您可以使用代码周围的Request::method() == 'POST'
或Request::isMethod('post')
。