在验证Paypal付款期间,Laravel从另一个控制器调用函数

时间:2015-05-17 01:37:22

标签: php paypal laravel-5

我有一个注册表(在这里使用Laravel 5),在提交时调用BusinessController @ postRegister

public function postRegister(Requests\RegisterBusinessRequest $request)
{
#1. get input, fill new class and save to database
#2. call PayPayController@postBusinessProvider
}

我正在尝试做的是调用我的PayPalController函数来处理付款,我已经尝试return Redirect::action('PayPalController@postBusinessProvider');但这似乎不起作用。

我是否必须简单地创建一个从另一个Controller调用函数的路径,或者是否有另一种方法而不创建路由?或者我应该将我的PayPal代码放在postRegister函数中,我认为更清洁分离?

1 个答案:

答案 0 :(得分:0)

在MVC模型中(以及在Laravel中),控制器不会在一个请求中调用另一个控制器。为了使您的控制器业务更简单,您可以使用以下两个选项之一:

选项1

将控制器逻辑分成小部分,每个部分由同一控制器类的privateprotected方法求解。所以你的控制器将是这样的:

public function postRegister(Requests\RegisterBusinessRequest $request)
{
    $this->_validateInput();
    $this->_processInput();
    $this->_doWithPaypal();
}

选项2

在这里创建一个存储库类和所有复杂的逻辑。在您的控制器方法中,获取存储库实例并将输入数据作为此实例方法的参数传递。您可以在zizaco/confide包中查看和示例。您的控制器将是这样的:

public function postRegister(Requests\RegisterBusinessRequest $request)
{
    $repo = App::make('PaypalRepositoryClass');
    // process your input
    // ...
    // ...
    $repo->paypalBusiness($data);
}