今回はLaravelでURLを生成する際にしようする「url()」についての記事です。
url生成には他にroute関数がありますが今回は「url()」でのURL生成についてまとめてみました。
多くはルーティングで名前付きルートを作成してURLを呼び出すことが多いのですが、URLを直接指定した場合がありこういう時どうするんだと思ったのでここで軽くまとめておきたいと思います。
「url()」でURLを取得・生成する
まずは「url()」でドメインを取得する方法です。
これはシンプルに以下で実現できます。
echo url('')
// https://test.com
「url()」の引数に空文字を入れることでドメインを取得できます。
続いてドメイン以下のページのURLを取得・生成する場合です。
echo url('post')
// https://test.com/post
$post = Post::find(1);
echo url('post/{$post->id}');
// https://test.com/post/1
このように引数に入れることで、ドメイン配下のパスを取得できるようになっています。
現在のURLに関する情報を取得・生成する
続いては「url()」に引数を指定しない場合です。
引数を指定しないと、「Illuminate\Routing\UrlGenerator」インスタンスというものが返されるらしいです。
そのインスタンスに用意されているメソッドによって取得できるURLがあります。
それがこちら。
・url()->current()
現在のURLを取得。クエリがある場合もクエリは除かれる。
・url()->full()
現在のURLでクエリも含むURLを取得。
・url()->previous()
直前のリクエストの完全なURLを取得。
例えば、「https://test.com/search」というページから
「https:/test.com/search/result?s=aaa」というページに遷移した場合、それぞれの生成されるURLは以下になります。
echo url()->current();
// https:/test.com/search/result
echo url()->full();
// https:/test.com/search/result?s=aaa
echo url()->previous();
// https://test.com/search
用途によって使い分けが必要です。
参考:
https://readouble.com/laravel/8.x/ja/urls.html#the-basics
エンジニアにおすすめ書籍
エンジニアになりたて、これから勉強を深めていきたいという方におすすめの書籍はこちら!