我有2个控制器,一个负责向DB提交表单,另一个负责PayPal集成,例如: -
http://laravelcode.com/post/how-to-integrate-paypal-payment-gateway-in-laravel-54
我想要它,以便当用户按下提交按钮时,它会执行常规数据库事务,但随后调用PayPal控制器来处理付款。
将2个控制器合并为一个或将PayPal控制器作为存储方法的一部分调用是否更好?
答案 0 :(得分:1)
您可以使用以下方法调用另一个控制器。
$controller = app()->make('App\Http\Controllers\PaypalController');
app()->call([$controller, 'process'], [$request]);
您的控制器功能定义为:
public function process(Request $request) {}
虽然不是最好的做法,但我用它来调用控制台命令和URL中引用的函数。
答案 1 :(得分:-1)
在执行数据库事务的函数中,尝试重定向到您的paypal函数:
public function myDBFunc() {
/* do transactions */
return redirect()->route('paypalRoute');
// or return redirect()->action('PaypalController@paypalFunc');
}
不要忘记将变量传递给路线/行动。