ルーティング定義とController作成を効率よく行う方法

artisanコマンドを利用して、リソース操作用のメソッドを含んだコントローラを作成できます。resourceメソッドを利用するとルーティング定義をまとめて行うことができます。

リソース操作用のメソッドを含んだコントローラを作成

例として、次のようにartisanコマンドを実行します。

php artisan make:controller TestController  --resource

すると「app/Http/Controllers/TestController.php」が生成されます。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class TestController 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)
    {
        //
    }
}

すでに、7つのメソッドが含まれていますね。
次に、各メソッドとURLを対応付けるために、ルーティング定義をします。

ルーティング定義

routes/web.php に、下記定義を記述します。

\Route::resource('tests', 'TestController');

この1行を定義するだけで、先ほどのメソッドと対応付けしてくれます。

URLとメソッドの対応関係

URLとメソッドの対応関係は、以下のようになります。

HTTPメソッド パス controllerメソッド 役割
GET /tests index リソースの一覧表示
GET /tests/create create リソースを新規作成するためのフォームを表示
POST /tests store リソースを新規作成
GET /tests/{test} show 指定されたリソースの詳細情報を表示
GET /tests/{test}/edit edit 指定されたリソースの編集フォームを表示
PUT/PATCH /tests/{test} update 指定されたリソースを更新

PUT:指定された情報を更新する
PATCH:指定された情報を部分的に更新する
DELETE /tests/{test} destroy 指定されたリソースを削除

より詳しい情報は下記サイトで確認できます。
https://readouble.com/laravel/5.5/ja/controllers.html#resource-controllers

不要なルートを作らない方法

only

only で必要なルートのみ指定して定義できます。

Route::resource('tests', 'TestController', ['only' => [
    'index', 'show'
]]);

apiResource

apiのときは、画面用のルートが不要なので、apiResource を利用します。

Route::apiResource('tests', 'TestController');

PUT, PATCH, DELETEメソッドの指定

HTMLのFORMでサポートしていないPUT PATCH DELETE を指定するには _method隠しフィールド を利用します。

例えば、PUTメソッドを指定するには下記のようにします。

<form action="{{ url('/posts/' . $post_id) }}" method="POST">
    <input type="hidden" name="_method" value="PUT">
    <input type="hidden" name="_token" value="{{ csrf_token() }}">
</form>
【エンジニア向け】仕事を見つける方法

転職する

転職エージェントを活用する

転職サイトの場合、自身でサイト上から企業を探す必要があります。 一方「レバテックキャリア」 などの転職エージェントの場合、エージェントが企業を紹介してくれます。エージェントが間に入ることにより、日程調整や、条件交渉などもサポートしてくれます。

転職ドラフトを活用する

転職ドラフト」は、 企業がITエンジニアをドラフトという形で指名するサービスです。年収が最初に提示されるなどのメリットがあります。 ただ、初回登録時にレジュメ作成が必要で、すでにエンジニア経験が豊富にあるエンジニア向けのサービスかと思います。 レジュメ作成が手間ですが、自身のキャリアを見直す機会になり、他の仕事探しにも役立つはずです。

エンジニア転職保証のあるスクールを活用する

ある程度、開発経験のあるかたであれば、独学で必要なスキルを身につけることができるはずです。ただ、別業種からエンジニアに転職したい場合など、1から独学で学ぶのはハードルが高いです。そういった方は、スクールの活用を検討しても良いと思います。 「TechAcademy」は、エンジニア転職保証コースを提供しています。給付金制度の対象講座として認定されているため、金銭面の負担も抑えることができます。

フリーランスとして活動する

レバテックフリーランス」「ITプロパートナーズ」「ギークスジョブ」は、フリーランスエージェントサービスです。 エージェントによって、支払いサイトなど細かい違いはありますが、まずは良い案件を見つけることが重要です。 登録自体は無料なので、複数エージェントに登録して、より多くの案件を紹介してもらうのがおすすめです。

logo
わくわくBank.
技術系の記事を中心に、役に立つと思ったこと、整理したい情報などを掲載しています。