1
3

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 3 years have passed since last update.

【Laravel】ルーティングについて

Last updated at Posted at 2020-06-27

こちらの記事は以下の書籍を参考に執筆しました

#アプリケーションの構成
作成したプロジェクトトの中身をまずな見ていきます。
##Laravelのファイル
プロジェクト作成時に作成されるファイル類です。
Git関連やComposer関連なども有り、必ずしも回はる車がすべて利用するものでは有りません。

ファイル 説明
.editorConfig エディタに関する汎用設定ファイル
.env,.env.example 動作環境に関する設定情報
.gitattributes,.gitgnore git利用に関する設定情報
.styleci.yml StyleCIというコードチェッカーのファイル
artisan artisanコマンド
composer.json,composer.lock composerの利用に関するもの
package.json, package-lock.json Javascriptのパッケージ管理ツール(npm)で利用するもの
phpunit.xml PHPUnit(ユニットテストプログラム)に関するもの
server.php サーバ起動時に利用されるプログラム
webpack.mix.js webpackというJavascriptパッケージツールで使うもの
yarn.lock yarnというパッケージマネー0ジャが使うファイル(自動生成される)

出典: PHPフレームワークLaravel入門 第2版

##Laravelのフォルダ
フォルダはそれぞれの役割が決まっています。

フォルダ 説明
app アプリケーションの開発時には、ここにスクリプトを追加
boostrap アプリケーション実行時に最初に行われる処理をまとめる
config 設定関連
database DB関連
publick 公開フォルダ。Javascriptのスタイルシートなど、外部にそのまま公開されるファイルをまとめる
resources リソース関連の配置場所。
routers ルート関連の保存場所。アクセスするアドレスに割り当てられるプログラムの情報を記す
strage ファイルの保存場所
tests ユニットテスト関連のファイルが用意されている
vendor フレームワーク本体のプログラムがまとまってる

出典: PHPフレームワークLaravel入門 第2版

以上で今後最も使っていくのは「app」と「routers」フォルダです。
プログラムを作成し、それを適切なアドレスに割り当てるにはこの2つのフォルダにファイルを作成したり、用意されたファイルを編集したりする必要があります。

続いて「resources」フォルダです。
これは画面にwebページを表示する時に必要です。
「database」フォルダも使っていくことになります。

その他のフォルダは使用頻度は低くなるはずです。

まずは「app」「routers」「resources」の3つ役割を把握します。

##appフォルダについて
最も需要且つ利用頻度が高いです。
appフォルダには以下のようなファイルがあります。

|ファイル|説明|
|Console|コンソールプログラムを配置|
|Exceptions|例外に関する処理を配置|
|Http|WEBアプリケーションにアクセスした時の処理をまとめる。アプリケーションの基本的なプログラムはここに作成|
|Providors|プロバイダと呼ばれるプログラムを配置|
|User.php||ユーザ認証に関するスクリプト。|

最も重要なのはHttpフォルダです。
基本的なプログラムをここに書いていきます。
ほかは必要に応じてって感じです。

#ルーティングとroutersフォルダ
ウェブサイトでは、例えばAフォルダにB.htmlを入れればhttp://○○/A/B.htmlでアクセスできますが、Laravelはそうはいきません。

Laravelは特定のアドレスにアクセスすると、そのアドレスに割り当てられたプログラムが実行されます。

このように「〇〇というアドレスにアクセスしたら✕✕という処理を呼び出す」という関連付けをしているのがルーティングです。

##routersフォルダについて
このルーティング情報をまとめているのが、routersフォルダです。
中身はこうなってます。

ファイル 説明
api.php APIのルーティング。
channels.php ブロードキャストチャンネルのためのルーティング
console.php コンソールプログラムのためのルーティング
web.php 一般的なWebページとしてアクセスするためのルーティング

出典: PHPフレームワークLaravel入門 第2版

Webページとして公開するものは基本的にすべてweb.phpにルート情報を書きます。
#ルート情報の記述

web.php
<?php
Route::get('/', function () {
    return view('welcome');
});

出典: PHPフレームワークLaravel入門 第2版

web.phpを見てみるとこの様になっていて、トップページにアクセスしたときの処理について書かれてます。

##ルート情報の基本(GETアクセス)

Route::get(アドレス,関数など);

出典: PHPフレームワークLaravel入門 第2版

Routerクラスの静的メソッドで設定します。第1引数にアドレスを、第2引数にその処理を書きます。
getメソッドでアドレスと処理を割り当てているというのがルート情報設定の基本です。
#トップページのルート情報
では具体的にweb.phpの中身を見ていきます。

web.php
<?php
Route::get('/', function () {
    return view('welcome');
});

出典: PHPフレームワークLaravel入門 第2版

/はトップページを表します。
そしてviewという関数で戻り地を設定しています。

view(テンプレート名);

viewは指定したテンプレートファイをロードし、レンダリング(HTML出力)して返します。

##welcomeテンプレートについて
return view('welcome');welcome.blade.phpというテンプレートファイツをレンダリングして表示します。
welcome.blade.phpは「resourceas」フォルダの「views」フォルダにあります。

welcome.blade.php
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Laravel</title>

        <!-- Fonts -->
        <link href="https://fonts.googleapis.com/css?family=Nunito:200,600" rel="stylesheet">

        <!-- Styles -->
        <!-- 省略 -->
    </head>
    <body>
        <div class="flex-center position-ref full-height">
            @if (Route::has('login'))
                <div class="top-right links">
                    @auth
                        <a href="{{ url('/home') }}">Home</a>
                    @else
                        <a href="{{ route('login') }}">Login</a>

                        @if (Route::has('register'))
                            <a href="{{ route('register') }}">Register</a>
                        @endif
                    @endauth
                </div>
            @endif

            <div class="content">
                <div class="title m-b-md">
                    Laravel
                </div>

                <div class="links">
                  <!-- 省略 -->
                </div>
            </div>
        </div>
    </body>
</html>

出典: PHPフレームワークLaravel入門 第2版

中身を見てみると**@で始まる文があります。
これはHTMLでもなくPHPでもありません。
これは
Blade**というLaraveに組み込まれているテンプレートエンジンを使って書かれたソースコードです。

Laravelでは普通にPHPでHTMLを書くよりもBladeを使ったほうが遥かに多いです。
ここでは「views」フォルダ7日にあテンプレートファイルが用意され、それをview関数で読み込んで表示しているという仕組みを理解しておきましょう。

1
3
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
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?