Laravel 6.0
route
メソッドの第3引数にfalse
を渡すと相対パスを返してくれるらしい。(デフォルトはtrue)
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