2016-08-22 80 views
0

要開發一個項目,我要創建一些在所有控制器中都很常見的方法。在laravel 5.2中編寫常用方法

在此之前,我已經使用codeigniter,然後在core目錄中寫入MY_Controller類,然後將控制器擴展到控制器目錄中的所有控制器中。

同樣我想在Laravel以內做。但我很困惑,我應該在哪裏編寫常見方法,如send_email,validate_captcha,ajax_file_upload以及其他在整個應用中保持相同的常用方法。

所以,請給我一個定義這樣的類或中間件的好方法。應該怎麼做才能創建它?

+0

你應該發佈你已經嘗試過,以實現這一目標。你有很多可能性,對於你的每一個需求它可能是一個不同的。如果你想驗證一個驗證碼,你可以編寫一個RequestValidator並將它擴展到你的其他驗證器中,但是你不必強制使用驗證器,這樣你就可以創建你自己的控制器並提供驗證方法,並讓其他控制器擴展它 –

回答

0

好的。讓我建議一些東西

  1. 需要編寫適用於所有控制器的方法。您
    可以/應該修改App\Http\Controllers\Controller.php。因爲全部 Laravel中的控制器擴展它
  2. 需要編寫可在整個應用程序中使用的類。這是 從未容易

步驟1:寫你app文件夾中所需的任何類。並遵循psr-4公約

第2步:註冊Laravel申請 在App\Providers\AppServiceProvider。在register()方法。添加

$this->app->bind('bindname', function ($app) { 
    return new \App\YourClass; 
    // If you want to inject other class to YourClass contructor 
    // return new \App\YourClass($app->make('otherbindname')); 
}); 

步驟3:使用它。有幾種方法來訪問YourClass在整個應用:)

app()->make('bindname'); 

app('bindname'); 

app()['bindname']; 

\App::make('bindname'); 

//etc 
0

,如果你寫的一種方法,其是相同的所有頁面在這種情況下,在laravel並在開機使用的服務提供商服務(方法在課堂內部,併成爲所有頁面的全球

+0

歡迎[Stack Overflow](http://stackoverflow.com/)!請閱讀[我如何寫出一個好答案](http://stackoverflow.com/help/how-to-answer)? –

+0

謝謝!!!我們在這裏解決不討論,如果你不明白如何做到這一點,只要問我 – 2017-09-25 06:08:43

+0

如果你認爲基於配置文件,你可以判斷每個人而不是爆炸兄弟。你是成功的良好軌道。感謝您睜開我的眼睛。 :) – 2017-09-26 06:21:51

相關問題