LoginSignup
3
4

More than 5 years have passed since last update.

Laravelのrouteヘルパーで相対URLを使う

Last updated at Posted at 2018-08-29

laravelのrouteヘルパーを利用する絶対URLで出力される。
個人的にはサイト内のリンクは相対URL(ルートパス)で表記したい。

調査

$ php artisan tinker
Psy Shell v0.9.7 (PHP 7.2.9  cli) by Justin Hileman
>>> route('login')
=> "http://localhost:8000/login"

調べると第3引数で指定できるらしい。

vendor/laravel/framework/src/Illuminate/Foundation/helpers.php
    function route($name, $parameters = [], $absolute = true)
    {
        return app('url')->route($name, $parameters, $absolute);
    } 

で実行してみる

>>> route('login', null, false)
=> "/login"

ok。解決かなと思うけど、毎回、第2引数にnullセットして第3引数にfalse入れるの辛い。

対応

下記を参考にヘルパーを自作する

Laravel 5へ自作のヘルパー関数を追加するベストプラクティス | 綺麗に死ぬITエンジニア

自作ヘルパーの作成

app/helpers.php
<?php

if (! function_exists('route_path')) {
    function route_path($name, $parameters = [])
    {
        return route($name, $parameters, false);
    }
}

オートロードの設定

composer.json
    "autoload": {
        "classmap": [
            "database/seeds",
            "database/factories"
        ],
        "psr-4": {
            "App\\": "app/"
        },
        "files": [
+           "app/helpers.php"
        ]
    },

反映

$ composer dump-autoload

確認

$ php artisan tinker
Psy Shell v0.9.7 (PHP 7.2.9  cli) by Justin Hileman
>>> route_path('login')
=> "/login"

すっきり

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