2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Larevel routes/web.phpとかに書けるメソッドたち

Last updated at Posted at 2019-10-30

ルーティングに直接関わるもの抜粋。
group()とかprefix()などは省いてます。

HTTPメソッドに対応したもの

Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);

使い方

Route::get('/path/to/route/{param}',function($param){
    // return view('...'); などなど...
});

Route::get('/path/to/route/{param}', 
    'path\to\Controller@methodName');

ルーティング 5.7 Laravel

リソースルート

php artisan make:controller ****Controller --resourceってしたときに自動的に作られるメソッドに対応したルーティングをしてくれる。

Route::resource($uri, $controller, $options = []);

使い方

例としてこんなのを作るとこうなる

Route::resource('articles', 'ArticleController');
HTTPメソッド URI 対応するコントローラのメソッド
GET /articles index()
GET /articles/create create()
POST /articles store(Request $request)
GET /articles/{article} show($id)
GET /articles/{article}/edit edit($id)
PUT/PATCH /articles/{article} update(Request $request, $id)
DELETE /articles/{article} destroy($id)

create()edit($id)はモデルの新規作成・編集用のViewを返すためのメソッドとして用意されている。

オプションをいじる

Route::resource('articles', 'ArticleController', ['only' => ['index']]);

などとするとGETで/articles以外にリクエストを送ると404が返る。
オプションで実装していないメソッドなどを明示しないとReflectionExceptionとかが出る。

他にもRoute::resource()->only([...])とかでも指定できるみたいだけど、name()付けたいときとかに困りがちなので配列で引数に与えるのがおすすめ。

コントローラ 5.7 Laravel

APIルート

さっきのからcreate()edit($id)がなくなった版。
php artisan make:controller ****Controller --apiに対応してます。

Route::apiResource($uri, $controller, $options = []);
Route::apiResources($array);

使い方

Route::apiResource('/articles', 'ArticleController');

Route::apiResource('/articles', 'ArticleController', ['only' => ['index', 'show']);

Route::apiResources([
    'articles' => 'ArticleController',
    'users' => 'UserController'
]);

Route::apiResources()にオプションを効かすこともできる。

Route::apiResources(
    [
        'articles' => 'ArticleController',
        'users' => 'UserController'
    ],
    [
        'only' => ['index','show']
    ]
);

こんな実装なので、配列に書いたコントローラすべてに同じオプションを効かすようです。

    /**
     * Register an array of API resource controllers.
     *
     * @param  array  $resources
     * @param  array  $options
     * @return void
     */
    public function apiResources(array $resources, array $options = [])
    {
        foreach ($resources as $name => $controller) {
            $this->apiResource($name, $controller, $options);
        }
    }

コントローラ 5.7 Laravel

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?