使用此代码,我收到错误:
缺少PurchaseController :: postPurchase()的参数1,在第44行的/Applications/MAMP/htdocs/ec/app/controllers/PurchaseController.php中调用并定义
public $input;
public $id;
public function getPurchase()
{
return View::make('general.purchase');
}
public function getCheckout()
{
return View::make('general.checkout');
}
public function getItemView($id)
{
if (isset($id)) {
$this->id = $id;
return View::make('general.purchase')
->with('item', Catagory::where('id', '=', $id)->firstOrFail());
} else {
return App::abort(404);
}
}
public function postPurchaseCheck($id)
{
$input = Input::all();
$this->input = $input;
if (Input::get('buy')) {
return $this->postPurchase();
}
elseif (Input::get('cart')) {
return $this->postAddCart();
}
}
public function postPurchase($id)
{
echo $id;
}
这是我的控制器:
Route::post('/purchase/{id}', array(
'as'=>'purchase-post',
'uses'=>'PurchaseController@postPurchaseCheck'
));
在发布到函数postPurchase()后,我得到以下网址:
购买/%7Bid%7D
答案 0 :(得分:0)
以非专业术语:通过转到getItemView
的网址,向Laravel询问项目视图。 Laravel返回编译的视图HTML并发送到浏览器。这个Laravel实例现已终止。您填写表单并将其发布到postPurchase
的网址。
正如您所见,上一个laravel实例已被终止...在该实例中设置的任何内容现在都可用于您的postPurchase
方法。要获取商品ID,您应该将其作为URL参数或路线的POST数据发送。
class MyController extends BaseController {
public function getItemView($id)
{
// Your code here
}
public function postPurchase($id)
{
// Your code here (notice id as param)
}
}
Route::get('item/{id}', 'MyController@getItem');
Route::post('purchase/{id}', 'MyController@postPurchase');
现在,在您的表单中,当您提交它时,您需要确保该网址包含应该发送到postPurchase
方法的项目的ID。
<form method="POST" action="/purchase/4">
<!-- form HTML here -->
</form>
希望能告诉你你需要做什么。如果您愿意将id作为post变量发送,可以将其作为表单中的隐藏字段。