我有一个注册表(在这里使用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函数中,我认为更清洁分离?
答案 0 :(得分:0)
在MVC模型中(以及在Laravel中),控制器不会在一个请求中调用另一个控制器。为了使您的控制器业务更简单,您可以使用以下两个选项之一:
选项1
将控制器逻辑分成小部分,每个部分由同一控制器类的private
或protected
方法求解。所以你的控制器将是这样的:
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);
}