我是Laravel的新手。我在PaymentController
中有一些功能。我想从SmartpaySController
调用这些函数。这是PaymentController
中可用的功能。呆在SmartpaySController
中,帮助我调用该函数。
public function getPaymentFailed($paymentId) {
$transactionData = $this->paymentRepo->find($paymentId);
if($transactionData) {
$data['quote'] = $this->quoteRepo->getQuoteById($transactionData->quote_id);
$data['metaTitle'] = 'Payment failed';
$data['returnMessage'] = $transactionData->return_message;
return view('payment::payment.quote_payment_failed', $data);
}
}
谢谢。
答案 0 :(得分:1)
更改:
public function getPaymentFailed($paymentId)
收件人:
public static function getPaymentFailed($paymentId)
这将通过以下操作使其在您的SmartpaySController中静态可用:
PaymentController::getPaymentFailed($paymentId);
答案 1 :(得分:1)
Instead of calling controller methods, the better practice is that you can create traits like: app/Traits and extend in controller
// trait
trait traitName {
public function getData() {
// .....
}
}
//控制器
class ControlelrName extends Controller {
use TraitName;
}
答案 2 :(得分:0)
我建议您不要将功能从一个控制器调用到另一个控制器。 制作助手,资源或以其他方式实现相同功能
请勿将控制器用作对象
但是,如果您仍然想这样做,则可以使用:
SomeController.phpclass SomeController extend Controller {
public function someFunction(Request $request) {
// Here Some Code
}
}
YourController.php
use SomeController;
...
public function getPaymentFailed(Request $request, $paymentId) {
$controller_data = (new SomeController)->someFunction($request);
$transactionData = $this->paymentRepo->find($paymentId);
if($transactionData) {
$data['quote'] = $this->quoteRepo->getQuoteById($transactionData->quote_id);
$data['metaTitle'] = 'Payment failed';
$data['returnMessage'] = $transactionData->return_message;
return view('payment::payment.quote_payment_failed', $data);
}
}
答案 3 :(得分:0)
您可以使用 Real-Time Facades
使用实时外观,您可以在应用程序中处理任何类 仿佛是外墙。
要生成实时外观,请为导入的名称空间添加前缀 外墙课程:
//...
use use Facades\App\Http\Controllers\SomeController;
//...
return SomeController::getPaymentFailed($request, $paymentId);