将变量发送到其他函数

时间:2014-07-25 17:03:04

标签: php

使用此代码,我收到错误:

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

1 个答案:

答案 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变量发送,可以将其作为表单中的隐藏字段。