为了账号安全,请及时绑定邮箱和手机立即绑定

将一个控制器中的函数调用到另一个控制器

将一个控制器中的函数调用到另一个控制器

PHP
临摹微笑 2022-10-22 15:36:31
我是 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);        }}
查看完整描述

4 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

Instead of calling controller methods, the better practice is that you can create traits like: app/Traits  and extend in controller

//特征


trait traitName {


    public function getData() {

        // .....

    }

}

//控制器


class ControlelrName extends Controller {

     use TraitName;

}


查看完整回答
反对 回复 2022-10-22
?
慕村225694

TA贡献1880条经验 获得超4个赞

改变:

public function getPaymentFailed($paymentId)

至:

public static function getPaymentFailed($paymentId)

这将通过执行以下操作使其在您的 SmartpaySController 中静态可用:

PaymentController::getPaymentFailed($paymentId);


查看完整回答
反对 回复 2022-10-22
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

您可以使用实时外观

使用实时外观,您可以将应用程序中的任何类视为外观。

要生成实时外观,请在导入类的命名空间前加上 Facades:

//...


use use Facades\App\Http\Controllers\SomeController;


//...


return SomeController::getPaymentFailed($request, $paymentId);


查看完整回答
反对 回复 2022-10-22
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

我建议您不要将函数从一个控制器调用到另一个控制器。制作助手、资源或以其他方式实现相同的功能


永远不要使用控制器作为对象


但是,如果你想这样做,你可以使用:


SomeController.php

class SomeController extend Controller {

    public function someFunction(Request $request) {

        // Here Some Code

    }

}

你的控制器.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);

    }

}


查看完整回答
反对 回复 2022-10-22
  • 4 回答
  • 0 关注
  • 121 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信