第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Laravel 5中另一個(gè)控制器的Access Controller方法

Laravel 5中另一個(gè)控制器的Access Controller方法

我有兩個(gè)控制器SubmitPerformanceController和PrintReportController。在PrintReportController我有一個(gè)稱為的方法getPrintReport。如何訪問此方法SubmitPerformanceController?
查看完整描述

3 回答

?
繁花不似錦

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個(gè)贊

您可以這樣訪問控制器方法:


app('App\Http\Controllers\PrintReportController')->getPrintReport();

這可以工作,但是在代碼組織方面很不好(請(qǐng)記住為您使用正確的名稱空間PrintReportController)


您可以擴(kuò)展,PrintReportController以便SubmitPerformanceController將繼承該方法


class SubmitPerformanceController extends PrintReportController {

     // ....

}

但這也會(huì)繼承的所有其他方法PrintReportController。


最好的方法是創(chuàng)建一個(gè)trait(例如app/Traits),在其中實(shí)現(xiàn)邏輯并告訴您的控制器使用它:


trait PrintReport {


    public function getPrintReport() {

        // .....

    }

}

告訴您的控制器使用此特征:


class PrintReportController extends Controller {

     use PrintReport;

}


class SubmitPerformanceController extends Controller {

     use PrintReport;

}

兩種解決方案都SubmitPerformanceController具有g(shù)etPrintReport方法,因此您可以$this->getPrintReport();在控制器內(nèi)使用或直接將其作為路徑調(diào)用(如果您在中將其映射routes.php)


您可以在這里閱讀更多有關(guān)特征的信息。


查看完整回答
反對(duì) 回復(fù) 2019-11-25
?
慕的地8271018

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊

如果您需要在另一個(gè)控制器中使用該方法,則意味著您需要對(duì)其進(jìn)行抽象并使其可重用。將該實(shí)現(xiàn)移到服務(wù)類(ReportingService或類似的類)中,并將其注入到控制器中。


例:


class ReportingService

{

  public function getPrintReport()

  {

    // your implementation here.

  }

}

// don't forget to import ReportingService at the top (use Path\To\Class)

class SubmitPerformanceController extends Controller

{

  protected $reportingService;

  public function __construct(ReportingService $reportingService)

  {

     $this->reportingService = $reportingService;

  }


  public function reports() 

  {

    // call the method 

    $this->reportingService->getPrintReport();

    // rest of the code here

  }

}

對(duì)需要該實(shí)現(xiàn)的其他控制器執(zhí)行相同的操作。從其他控制器獲取控制器方法是一種代碼味道。


查看完整回答
反對(duì) 回復(fù) 2019-11-25
?
梵蒂岡之花

TA貢獻(xiàn)1900條經(jīng)驗(yàn) 獲得超5個(gè)贊

不建議從另一個(gè)控制器調(diào)用一個(gè)控制器,但是,如果由于某種原因必須這樣做,則可以執(zhí)行以下操作:


Laravel 5兼容方法


return \App::call('bla\bla\ControllerName@functionName');

注意:這不會(huì)更新頁面的URL。


最好改為調(diào)用Route并讓它調(diào)用控制器。


return \Redirect::route('route-name-here');


查看完整回答
反對(duì) 回復(fù) 2019-11-25
  • 3 回答
  • 0 關(guān)注
  • 734 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)