수색…
소개
 요청 처리 논리를 모두 경로 파일의 Closures로 정의하는 대신 컨트롤러 클래스를 사용하여이 동작을 구성 할 수 있습니다. 컨트롤러는 관련 요청 처리 로직을 단일 클래스로 그룹화 할 수 있습니다. 컨트롤러는 기본적으로 app/Http/Controllers 디렉토리에 저장됩니다. 
기본 컨트롤러
<?php
namespace App\Http\Controllers;
use App\User;
use App\Http\Controllers\Controller;
class UserController extends Controller
{
    /**
     * Show the profile for the given user.
     *
     * @param  int  $id
     * @return Response
     */
    public function show($id)
    {
        return view('user.profile', ['user' => User::findOrFail($id)]);
    }
}
이 컨트롤러 동작에 대한 경로를 다음과 같이 정의 할 수 있습니다.
 Route::get('user/{id}', 'UserController@show'); 
 이제 요청이 지정된 라우트 URI와 일치하면 UserController 클래스의 show 메소드가 실행됩니다. 물론 경로 매개 변수도 메서드에 전달됩니다. 
컨트롤러 미들웨어
미들웨어는 라우트 파일의 컨트롤러 경로에 할당 될 수 있습니다.
 Route::get('profile', 'UserController@show')->middleware('auth'); 
그러나 컨트롤러의 생성자 내에서 미들웨어를 지정하는 것이 더 편리합니다. 컨트롤러 생성자의 미들웨어 메소드를 사용하면 컨트롤러의 동작에 미들웨어를 쉽게 할당 할 수 있습니다.
class UserController extends Controller
{
    /**
     * Instantiate a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth');
        $this->middleware('log')->only('index');
        $this->middleware('subscribed')->except('store');
    }
}
자원 컨트롤러
 Laravel 리소스 라우팅은 일반적인 "CRUD"경로를 코드 한 줄로 컨트롤러에 할당합니다. 예를 들어, 응용 프로그램에서 저장 한 "사진"에 대한 모든 HTTP 요청을 처리하는 컨트롤러를 만들 수 있습니다. make:controller Artisan 명령을 사용하면 다음과 같은 컨트롤러를 빠르게 만들 수 있습니다. 
 php artisan make:controller PhotoController --resource 
 이 명령은 app/Http/Controllers/PhotoController.php 에서 컨트롤러를 생성합니다. 컨트롤러에는 사용 가능한 각 리소스 작업에 대한 메서드가 포함됩니다. 
자원 제어기 모양 예
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class PhotoController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
    }
    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }
    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }
    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }
    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }
    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }
    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}
리소스 컨트롤러의 예제는 아래 표에 나와있는 메서드 이름을 공유합니다.
다음으로 컨트롤러에 대한 유용한 루트를 등록 할 수 있습니다.
 Route::resource('photos', 'PhotoController'); 
이 단일 경로 선언은 리소스에 대한 다양한 작업을 처리하기 위해 여러 경로를 만듭니다. 생성 된 컨트롤러에는 HTTP 동작과 처리하는 URI를 알려주는 메모를 포함하여 각 동작에 대해 스텁 된 메서드가 이미 있습니다.
자원 제어기가 처리하는 조치
| 동사 | URI | 동작 | 경로 이름 | 
|---|---|---|---|
| 도망 | /photos | 색인 | photos.index | 
| 도망 | /photos/create | 몹시 떠들어 대다 | photos.create | 
| 우편 | /photos | 저장 | photos.store | 
| 도망 | /photos/{photo} | 보여 주다 | photos.show | 
| 도망 | /photos/{photo}/edit | 편집하다 | photos.edit | 
| PUT / PATCH | /photos/{photo} | 최신 정보 | photos.update | 
| 지우다 | /photos/{photo} | 멸하다 | photos.destroy |