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');

使用此代码,我得到一个错误:

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 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>