2016-08-22 2 views
0

모든 컨트롤러에서 공통적 인 몇 가지 메소드를 작성하는 프로젝트를 개발하십시오.laravel 5.2에서 일반적인 방법을 작성하십시오.

전에 codeigniter를 사용했고 핵심 디렉토리에 MY_Controller 클래스를 작성한 다음 컨트롤러 디렉토리의 모든 컨트롤러에서 컨트롤러를 확장했습니다.

같은 것을 내부에서하고 싶습니다. Laravel. 그러나 나는 send_email, validate_captcha, ajax_file_upload 및 전체 응용 프로그램에서 동일하게 유지되는 다른 일반적인 방법과 같은 일반적인 방법을 어디에 작성해야하는지 혼동합니다.

그런 클래스 나 미들웨어를 정의하는 좋은 방법을 제안 해주십시오. 어떻게 만드시겠습니까?

+0

이것을 달성하기 위해 이미 시도한 것을 게시해야합니다. 당신에게는 여러 가지 가능성이 있으며 각 요구 사항에 따라 다른 요구 사항이있을 수 있습니다. captcha의 유효성을 검사하려면 RequestValidator를 작성하여 다른 유효성 검사기에서 확장 할 수 있지만 유효성 검사기를 사용하지 않아도되므로 자체 컨트롤러를 만들고 유효성 검사 메서드를 제공하고 다른 컨트롤러로 확장 할 수 있습니다. –

답변

0

확인. 일부 물건을 제안 해 드리겠습니다.

  1. 모든 컨트롤러에 적용되는 방법을 작성해야합니다. 당신
    수/수정할 수 App\Http\Controllers\Controller.php 수 있습니다. 왜냐하면 모두 컨트롤러는 Laravel에서 확장됩니다
  2. 전체 응용 프로그램에서 사용할 수있는 클래스를 작성해야합니다. 그것은 이다 결코

쉽게 1 단계 : 당신이 app 폴더에 원하는 클래스를 작성한다. 그리고 psr-4 대회

2 단계를 수행 App\Providers\AppServiceProvider에서 Laravel 응용 프로그램 에 등록합니다. 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 단계을 추가 사용합니다.

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

app('bindname'); 

app()['bindname']; 

\App::make('bindname'); 

//etc 
0

당신이 (laravel에 부팅에서 서비스 제공자의 서비스를 사용하는 경우 모든 페이지에 대해 동일한 방법의 종류를 작성하는 경우) 방법 : 당신의 전체 응용 프로그램에서 YourClass 액세스하는 방법은 여러 가지가 있습니다 모든 페이지에 대해 전체적으로 적용됩니다.

+0

Welcome [스택 오버플로] (http://stackoverflow.com/)! [좋은 답변을 어떻게 작성합니까?] (http://stackoverflow.com/help/how-to-answer)를 읽어주십시오. –

+0

감사합니다 !!! 우리는 해결책을 찾지 못한 채 토론을하는 방법을 모르면 그냥 묻습니다. –

+0

프로필을 기반으로 생각하는 경우 Bro에게 강타하기보다는 모두를 판단 할 수 있습니다. 당신은 성공의 좋은 길에 있습니다. !!! 내 눈을 열어 줘서 고마워. :) –

관련 문제