ルーティングを理解!Laravelでrouteを使う方法【初心者向け】

初心者向けにLaravelでrouteを使う方法について解説しています。URLとコントローラのアクションを対応させる上で必須です。ルーティングする書き方を説明しているので、ぜひ参考にしてみてください。

TechAcademyマガジンは受講者数No.1のオンラインプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。

Laravelでrouteを使う方法について解説します。

Laravelではルーティングを設定するファイルがあるので、ルーティングをする書き方を理解しておきましょう。

 

そもそもPHPについてよく分からないという方は、PHPとは何なのか解説した記事を読むとさらに理解が深まります。

 

なお本記事は、TechAcademyのオンラインブートキャンプPHP/Laravel講座の内容をもとに紹介しています。

 

田島悠介

今回は、Laravelに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

Laravelでrouteを使う方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

routeとは

routeとは、URLとコントローラーのアクションの対応ルールのことです。対応ルールを作成することをルーティングと呼んだりします。

このURLでアクセスされた時にはこのコントローラーのアクションを呼び出してください、ということをアプリケーションにお願いするために、Laravel5.3からは大抵routes/web.phpにルートを定義していきます(5.2以下は確かapp/Http/routes.php?お使いのバージョンに合わせて定義場所を確認してください)。

このファイルをみればどのURLでどの処理が行われるのかが一目瞭然にわかるという話になります。ここに何も書かなければせっかく書いた処理も呼ばれることはないため、忘れずにルーティングしていきましょう。

 

Laravelのrouteの書き方

routeの書き方はroutes/web.phpにRouteファサードを使って記述していきます。Routeファサードのメソッドはhttpメソッドに対応した名前で、get、post、put、deleteなどが基本的なものです。例えば、

Route::get('books', 'PostController@index');

これは/booksパスにgetメソッドできたリクエストをPostController@indexで処理する、というルートを定義します。

RESTfulなルーティングを一度に行うresourceメソッドも使用可能です。

以下のルートは Route::resource(‘books’, ‘BooksController’); とほぼ同値です。

Route::get('books', ‘BooksController@index');
Route::post('books', 'BookController@store');
Route::get('books/create', 'BookController@create');
Route::get('books/:id', 'BookController@show');
Route::put('books/:id', 'BookController@update');
Route::delete('books/:id', 'BookController@destroy');
Route::get('books/:id/edit', 'BookController@edit');

 

[PR] PHPプログラミングで挫折しない学習方法を動画で公開中

実際にLaravelのrouteを使ってアクセスしてみよう

実際にroute使ってみましょう。/test/{slug}というパスに対して、TestControllerというindexアクションを持ったコントローラーをルーティングします。({slug}は任意の文字列とします)

まずは、routes/web.phpにルーティングを行います。

Route::get(‘test/{slug}’, ‘TestController@index’);

対応するTestControllerおよびindexアクションを定義します。ルートに記述したslugというパラメータがindexアクションの引数として与えられます。

<?php

namespace AppHttpControllers;

class TestController extends Controller
{
    public function index($slug)
    {
        return htmlspecialchars($slug);
    }
}

ブラウザから/test/hogehogeにアクセスすると画面上にhogehogeが表示されるかと思います。ルートにはURLからアクションへのパラメータの受け渡しが行えますね。

これによって通常はidなどで異なるリソースの取得や更新などを振り分けることができるでしょう。

この記事を監修してくれた方

鵜澤峻平(うさわしゅんぺい)

普現在はフリーランスのエンジニアをしていてプログラミング歴は5年目になります。普段はRails、Laravel、Node.js等を使ってWeb、モバイルアプリケーションを作成しています。開発実績としては、いくつかのWebサービス、コンシューマー向けモバイルアプリケーション、NPOサイトリニューアル、ロボット用プログラムなどがあります。

TechAcademyでメンターをはじめたのは、「プログラミングでやりたいことがある人を応援したい」、「講師と受講者が話し合って学び方を決めていく」に惹かれたからです。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でもPHPやフレームワークのLaravelを使ってWebアプリケーション開発を習得できるオンラインブートキャンプPHP/Laravel講座を開催しています。

挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。