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

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

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

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

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

 

なお本記事は、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 App\Http\Controllers;

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コースを提供しています。

PHPやフレームワークのLaravelを使ってWebアプリケーションの開発を学ぶことができます。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間で習得することが可能です。

また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。