Php 向其他函数发送变量
使用此代码,我得到一个错误: PurchaseController::PostBurchase()缺少参数1,在第44行的/Applications/MAMP/htdocs/ec/app/controllers/PurchaseController.php中调用并定义Php 向其他函数发送变量,php,Php,使用此代码,我得到一个错误: PurchaseController::PostBurchase()缺少参数1,在第44行的/Applications/MAMP/htdocs/ec/app/controllers/PurchaseController.php中调用并定义 public $input; public $id; public function getPurchase() { return View::make('general.purchase');
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'
));
在发布到函数postpourchase()后,我得到以下url:
purchase/%7Bid%7D用外行的话说:您可以通过转到
getItemView
的URL向Laravel询问项目视图。Laravel返回已编译的视图HTML并发送到浏览器。此Laravel实例现在已终止。您填写一张表格,并将其发布到后期购买的URL
正如您在abouve中看到的,laravel的前一个实例已终止。。。在该实例中设置的内容现在对您的postpourchase
方法不可用。要获取项目ID,应将其作为URL参数或发送到路线的POST数据中
例子
控制器
路线
现在在您的表单中,当您提交它时,您需要确保url包含应该发送到postpourchase
方法的项目的id
<form method="POST" action="/purchase/4">
<!-- form HTML here -->
</form>
希望这能告诉你你需要做什么。如果愿意,可以将id作为post变量发送,方法是将其设置为表单中的隐藏字段。为什么希望以前的请求中可以使用
$this->id
?每个请求都会创建一个新的Laravel实例。。。(或一般的PHP),变量赋值将永远不会持久。我对laravel和PHP是新手,所以我不确定这意味着什么:(这意味着您可以通过转到getItemView
的URL向Laravel请求视图。返回视图后,Laravel将发送到浏览器。Laravel的实例现在已终止。您可以填写表单并将其发布到postPurchase
的URL。Laravel的上一个实例已终止…该实例中未设置任何内容。)e现在可用于您的postphase
方法。要获取您的ID,您应该将其作为URL参数或发送到路线的POST数据中。这应该是一个答案tbh…;-)谢谢!如果你能给我举个例子,我将不胜感激,因为我仍然不知道该怎么做。给你举个简单的例子。我更改了代码,我将编辑原始问题,以显示我现在拥有的内容。
Route::get('item/{id}', 'MyController@getItem');
Route::post('purchase/{id}', 'MyController@postPurchase');
<form method="POST" action="/purchase/4">
<!-- form HTML here -->
</form>