Laravel:ベースURLを取得する


182

簡単な質問ですが、答えを出すのはかなり難しいようです。Codeigniterでは、URLヘルパーをロードして、単純に

echo base_url();

サイトのURLを取得します。Laravelに同等のものはありますか?

回答:


282

URLジェネレータを呼び出すことができるURLファサードを使用できます

だからあなたはできる:

URL::to('/');

アプリケーションコンテナを使用することもできます。

$app->make('url')->to('/');
$app['url']->to('/');
App::make('url')->to('/');

または、UrlGeneratorを挿入します。

<?php
namespace Vendor\Your\Class\Namespace;

use Illuminate\Routing\UrlGenerator;

class Classname
{
    protected $url;

    public function __construct(UrlGenerator $url)
    {
        $this->url = $url;
    }

    public function methodName()
    {
        $this->url->to('/');
    }
}

3
そして、例からの考えられる外観にもかかわらず、これはLaravelのルートパスに関連しているため、インストールされ/something/ている場合は正しいURLを作成します。
ceejayoz 2014

@deFreitasと#ceejayoz URL :: toをlaravelローカリゼーションで使用する方法
Mubashar Iqbal

1
@MubasharIqbalあなたの質問を理解した場合{{URL::to('/my-page.html')}}、ビューとecho URL::to('/my-page.html');コードで
deFreitas

素敵なハンドラー、私の場合: <a class="button is-primary" href="<?= URL::to('/'); ?>/atencion/reporte" target="_blank">、ありがとう!
joelmez4

157

Laravel <5.2

echo url();

Laravel> = 5.2

echo url('/');

これがあなたを助けることを願っています


4
この回答を拡張して、コードスニペットだけでなく説明を含めることはできますか?

2
試験:ローカルにサイトがあります:localhost / abc Codeigniterの場合:echo base_url(); => localhost / abcを Laravelで取得:echo url(); => localhost / abcも取得します。
Nguy ThnThànhBồi2014年

1
これをセグメンテーションのあるURLに使用します:url()。 '/'。\ Request :: segment(1)。 '/'。\ Request :: segment(2)
0x1ad2

20
これは5.2では機能しないことに注意してください:github.com/laravel/framework/issues/11479url('/')ただし、代わりに使用できます
4lun

1
asset('/')base hrefで必要な末尾のスラッシュがあるため、私にはより良いようです。
vintproykt

47

Laravel 5の場合、私は通常以下を使用します。

<a href="{{ url('/path/uri') }}">Link Text</a>

url()関数を使用するとFacadeURL::to()


4
注:Webサイトがhttps経由で提供されているsecure_url()場合、同じ方法で関数を使用できます。これにより、httpsリンクが生成されます。url()httpsサイトでを使用しても、httpリンクが生成されます。
DrewT 2016

1
これは私のために働いた。また、secure_url()構文についても理解しておくと役立ちます。ありがとう。
jimmyplaysdrums

1
Lumen 5.4を使用しています。url()リクエストのプロトコルに基づいてhttpまたはhttpsリンクが生成されます。一方、secure_url()存在しません。Laravel 5.4でもこの変更はありましたか?
Andreas Linnert 2017

いいえ、Larvel 5.4の一部です。Lumenを使用したことがないのでコメントはできませんが、5.4 Laravelのドキュメントsecure_url()はここにあります:laravel.com/docs/5.4/helpers#method-secure-url
DrewT

23

2018年のLaravelリリース(5.7)のドキュメントから更新され、いくつかのurl()関数とその使用法が追加されました。

質問:LaravelでサイトのURLを取得するには?

これは一種の一般的な質問なので、分割することができます。

1.ベースURLへのアクセス

// Get the base URL.
echo url('');

// Get the app URL from configuration which we set in .env file.
echo config('app.url'); 

2.現在のURLへのアクセス

// Get the current URL without the query string.
echo url()->current();

// Get the current URL including the query string.
echo url()->full();

// Get the full URL for the previous request.
echo url()->previous();

3.名前付きルートのURL

// http://example.com/home
echo route('home');

4.アセットへのURL(公開)

// Get the URL to the assets, mostly the base url itself.
echo asset('');

5.ファイルのURL

use Illuminate\Support\Facades\Storage;

$url = Storage::url('file.jpg'); // stored in /storage/app/public
echo url($url);

これらの各メソッドには、URLファサードからもアクセスできます。

use Illuminate\Support\Facades\URL;

echo URL::to(''); // Base URL
echo URL::current(); // Current URL

使用法とともにブレードテンプレート(ビュー)からこれらのヘルパー関数を呼び出す方法。

// http://example.com/login
{{ url('/login') }}

// http://example.com/css/app.css
{{ asset('css/app.css') }}

// http://example.com/login
{{ route('login') }}

// usage

<!-- Styles -->
<link href="{{ asset('css/app.css') }}" rel="stylesheet">

<!-- Login link -->
<a class="nav-link" href="{{ route('login') }}">Login</a>

<!-- Login Post URL -->
<form method="POST" action="{{ url('/login') }}">

17

それをかなりのURLで機能させるために、私はしなければなりませんでした:

asset('/');

3
私の必要性にとってこれは最高です<base href="{{ asset('/') }}" />
15年

どうぞよろしくお願いいたします。<base href="..."/>末尾にスラッシュがあるため、ぴったり収まります
vintproykt

13

Laravelは多数のヘルパー関数を提供し、要件に応じて簡単に行うことができます

Laravelヘルパーのurl()関数を使用

Laravel 5.2の場合は、url( '/')を使用する必要があります

ここにLaravelの他のすべてのヘルパー関数のリストがあります


@sambelleroseそして、あなたはあなたができる内部のフォルダ/ファイルにアクセスしたいですかurl('/css/style.css')
Akshay Khale

13

この:

echo url('/');

この:

echo asset('/');

私の場合はどちらもホームURLを表示しました:)


3

別の可能性: {{ URL::route('index') }}


これが実際に機能し、誰もオプションを提供しなかったため、なぜこれが反対票を投じたのかわかりませんか?
CptChaos

2
私の反対票ではありませんが、理由は、ルートルートの名前をすべてのアプリで「インデックス」にすることは保証できないためだと思います。
ジョナサン

3

URL :: to( '/')を使用して、Laravelに画像を表示することもできます。下記を参照してください:

<img src="{{URL::to('/')}}/images/{{ $post->image }}" height="100" weight="100"> 

あなたの画像が「public / images」の下に保存されていると仮定します。


3

構成したアプリのURLを取得するには、次のように使用できます。

Config::get('app.url')

この定義はLaravel cliでのみ使用されます。app.urlそれはフォールバックのようです
ウォレスマクスターズ

1
まあもう、env( 'APP_URL')はおそらく最良のオプションでしょう。
ケニオン

2

私はこれを使用し、Laravel 5.3.18でうまくいきました。

<?php echo URL::to('resources/assets/css/yourcssfile.css') ?>

重要な注意:これは、URLから「public」をすでに削除している場合にのみ機能します。これを行うには、この役立つチュートリアルをチェックしてください


2

ちなみに、ルートに次のような名前がある場合:

Route::match(['get', 'post'], 'specialWay/edit', 'SpecialwayController@edit')->name('admin.spway.edit');

次のroute()ような関数を使用できます。

<form method="post" action="{{route('admin.spway.edit')}}" class="form form-horizontal" id="form-spway-edit">

その他の便利な機能:

$uri = $request->path();
$url = $request->url();
$url = $request->fullUrl();
asset()
app_path();
// ...

https://github.com/laravel/framework/blob/5.4/src/Illuminate/Foundation/helpers.php


2

これをチェックして -

<a href="{{url('/abc/xyz')}}">Go</a>

これは私にとってはうまくいき、あなたにとってもうまくいくことを願っています。


1

以下のように、ファサードまたはヘルパー機能を使用できます。

echo URL::to('/');
echo url();

リクエストにSymfonyコンポーネントを使用するLaravel、以下のLaravel内部ロジック。

namespace Symfony\Component\HttpFoundation;
/**
* {@inheritdoc}
*/
protected function prepareBaseUrl()
{
    $baseUrl = $this->server->get('SCRIPT_NAME');

    if (false === strpos($this->server->get('REQUEST_URI'), $baseUrl)) {
        // assume mod_rewrite
        return rtrim(dirname($baseUrl), '/\\');
    }

    return $baseUrl;
}

0

環境変数APP_URLの値を表示するためのベースURLを取得する別の方法を見つけました

env('APP_URL')

http:// domains_your // yours_websiteのようなベースURLが表示されます。.envファイル(ルートフォルダーにある)に環境変数を設定したと想定していることに注意してください。


0

リクエストから取得できます(laravel 5)。

request()->getSchemeAndHttpHost();

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.