LoginSignup
2
2

More than 3 years have passed since last update.

【Laravel】routeメソッドで生成されるURLを相対パスにする

Posted at

Laravel 6.0

routeメソッドの第3引数にfalseを渡すと相対パスを返してくれるらしい。(デフォルトはtrue)

ヘルパ 6.x Laravel

route関数はデフォルトとして絶対URLを生成します。相対URLを生成したい場合は、第3引数にfalseを渡してください。
$url = route('routeName', ['id' => 1], false);

helpers.php
if (! function_exists('route')) {
    /**
     * Generate the URL to a named route.
     *
     * @param  array|string  $name
     * @param  mixed  $parameters
     * @param  bool  $absolute
     * @return string
     */
    function route($name, $parameters = [], $absolute = true)
    {
        return app('url')->route($name, $parameters, $absolute);
    }
}
index.blade.php
<form action="{{route('foo/bar', [], false)}}" method="post">
 ...
</form>

おまけ

そもそも相対パスにしようと思ったのは、
サーバーの事情で生成されるURLのドメインが期待するものになっていなかったので、
絶対パスではなく、相対パスでURLを生成したかったから。

でもよく考えたらrouteメソッドで生成されるURLは相対パスにできても
リダイレクトは絶対パスが生成されていたのでドメインが違えば正しくリダイレクトできない。

どのみちURLのドメインを明示的に指定する必要があった。

↓リダイレクトも含めて生成されるURLを固定する方法
【Laravel】routeメソッドやリダイレクトで生成されるURLのホスト名を指定する - Qiita

2
2
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
2
2