我成功实现了一个
基本上,
我想知道这是否是一个好的设计 - 一个控制器调用另一个控制器,是吗?
如果不是,有什么更好的方法可以做到这一点吗?也许将我的代码从 PaypalController 移动到自定义服务提供程序、自定义帮助程序或其他什么地方?我非常新手 Laravel,我需要一些指导。
PaypalController
,其中包含一个可重用的postPayment()
方法,该方法接受商品和价格信息,创建一个Paypal支付,并将用户重定向到Paypal支付页面。class PaypalController extends Controller {
private static $_api_context;
private static function initialize() {
//initialize api context
}
public static function postPayment($items, $currency, $description) {
self::initialize();
//create item list, transaction, payment objects, etc
$payment->create(PaypalController::$_api_context);
...
return redirect()->away($redirect_url); // redirect to paypal
}
}
PaypalController
是其他控制器静态调用的。例如,AuthController
可以在用户注册后立即调用它来请求用户支付:
class AuthController extends Controller {
public function postRegister(Request $request) {
return PaypalController::postPayment($items, 'JPY', 'description');
}
}
基本上,
PaypalController
返回一个 Redirect
到 AuthController
,后者也返回它,以执行重定向到 Paypal 支付页面。我想知道这是否是一个好的设计 - 一个控制器调用另一个控制器,是吗?
如果不是,有什么更好的方法可以做到这一点吗?也许将我的代码从 PaypalController 移动到自定义服务提供程序、自定义帮助程序或其他什么地方?我非常新手 Laravel,我需要一些指导。