Laravel: Dapatkan url dasar


182

Pertanyaan sederhana, tetapi jawabannya sepertinya cukup sulit didapat. Di Codeigniter, saya bisa memuat pembantu url dan kemudian lakukan saja

echo base_url();

untuk mendapatkan URL situs saya. Apakah ada yang setara di Laravel?

Jawaban:


282

Anda dapat menggunakan fasad URL yang memungkinkan Anda melakukan panggilan ke pembuat URL

Jadi kamu bisa melakukan:

URL::to('/');

Anda juga dapat menggunakan wadah aplikasi:

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

Atau menyuntikkan 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
Dan terlepas dari kemungkinan kemunculannya dari contoh, ini relatif terhadap jalur root Laravel, jadi jika Anda menginstalnya /something/akan membuat URL yang benar.
ceejayoz

@deFreitas dan #ceejayoz cara menggunakan URL :: to dengan lokalisasi laravel?
Mubashar Iqbal

1
@MubasharIqbal Jika saya mengerti pertanyaan Anda, {{URL::to('/my-page.html')}}saat melihat dan echo URL::to('/my-page.html');pada kode
deFreitas

penangan yang bagus, dalam kasus saya:, <a class="button is-primary" href="<?= URL::to('/'); ?>/atencion/reporte" target="_blank">terima kasih!
joelmez4

157

Laravel <5.2

echo url();

Laravel> = 5.2

echo url('/');

Semoga ini bisa membantu Anda


4
Bisakah Anda memperluas jawaban ini dengan menyertakan penjelasan, bukan hanya potongan-kode?

2
Ujian: Saya punya situs di lokal: localhost / abc Dalam Codeigniter: echo base_url (); => Saya mendapatkan localhost / abc Di Laravel: echo url (); => Saya mendapatkan localhost / abc juga.
Nguyễn Thành Bồi

1
Gunakan ini untuk url dengan segmentasi: url (). '/'. \ Request :: segment (1). '/'. \ Request :: segment (2)
0x1ad2

20
Perhatikan bahwa ini tidak lagi berfungsi di 5.2: github.com/laravel/framework/issues/11479 Anda dapat menggunakannya url('/')sebagai gantinya
4lun

1
asset('/')tampaknya lebih baik bagi saya karena memiliki garis miring yang diperlukan dalam basis href.
vintproykt

47

Untuk Laravel 5 saya biasanya menggunakan:

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

Saya memahami bahwa menggunakan url()fungsi ini memanggil sama FacadedenganURL::to()


4
Catatan: jika situs web Anda dilayani lebih dari https Anda dapat menggunakan secure_url()fungsinya dengan cara yang sama, dan ini akan menghasilkan tautan https. Menggunakan url()di situs https masih akan menghasilkan tautan http.
DrewT

1
Yang ini berhasil untuk saya. Juga berguna untuk mengetahui sintaks secure_url (). Terima kasih.
jimmyplaysdrums

1
Saya menggunakan Lumen 5.4. Di sana url()menghasilkan tautan http atau https berdasarkan protokol permintaan. Di sisi lain secure_url()tidak ada. Apakah ini juga berubah dalam Laravel 5.4?
Andreas Linnert

Tidak, itu bagian dari Larvel 5.4. Saya tidak bisa berkomentar karena saya belum pernah menggunakan Lumen tetapi dokumentasi 5.4 Laravel secure_url()tersedia di sini: laravel.com/docs/5.4/helpers#method-secure-url
DrewT

23

Pembaruan dari 2018 Laravel release (5.7) dokumentasi dengan beberapa lebih banyak fungsi url () dan penggunaannya.

Pertanyaan: Untuk mendapatkan URL situs di Laravel?

Ini semacam pertanyaan umum, jadi kita bisa membaginya.

1. Mengakses URL Base

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

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

2. Mengakses URL Saat Ini

// 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 Untuk Rute Bernama

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

4. URL Ke Aset (Publik)

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

5. File URL

use Illuminate\Support\Facades\Storage;

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

Masing-masing metode ini juga dapat diakses melalui fasad URL:

use Illuminate\Support\Facades\URL;

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

Cara memanggil fungsi Helper ini dari Templat Blade (Tampilan) dengan penggunaan.

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

Agar berfungsi dengan URL yang tidak cantik, saya harus melakukan:

asset('/');

3
Untuk kebutuhan saya ini adalah yang terbaik<base href="{{ asset('/') }}" />
rneves

Kudos untuk Anda! Sangat pas <base href="..."/>karena trailing slash
vintproykt

13

Laravel menyediakan banyak fungsi pembantu dan untuk kebutuhan Anda, Anda dapat melakukannya dengan mudah

gunakan fungsi url () dari Laravel Helpers

tetapi dalam kasus Laravel 5.2 Anda harus menggunakan url ('/')

di sini adalah daftar semua fungsi pembantu Laravel lainnya


@sambellerose dan Anda ingin mengakses folder / file dalam yang dapat Anda lakukanurl('/css/style.css')
Akshay Khale

13

Ini:

echo url('/');

Dan ini:

echo asset('/');

keduanya menampilkan url beranda dalam kasus saya :)


3

Kemungkinan lain: {{ URL::route('index') }}


Tidak yakin mengapa ini diturunkan, karena ini benar-benar berfungsi dan tidak ada yang memberikan opsi juga?
CptChaos

2
Bukan downvote saya, tetapi saya menduga alasannya adalah bahwa Anda tidak dapat menjamin penamaan rute root Anda menjadi "indeks" di setiap aplikasi.
Jonathan

3

Anda juga dapat menggunakan URL :: to ('/') untuk menampilkan gambar di Laravel. Silahkan lihat di bawah ini:

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

Asumsikan, gambar Anda disimpan di bawah "publik / gambar".


3

Untuk hanya mendapatkan url aplikasi, yang Anda konfigurasikan dapat Anda gunakan:

Config::get('app.url')

Definisi ini hanya digunakan dalam Laravel cli. app.urltampaknya mundur
Wallace Maxters

1
Baiklah, env ('APP_URL') mungkin akan menjadi pilihan terbaik.
Kenyon

2

Saya menggunakan ini dan itu bekerja untuk saya di Laravel 5.3.18:

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

CATATAN PENTING: Ini hanya akan berfungsi bila Anda telah menghapus "publik" dari URL Anda. Untuk melakukan ini, Anda dapat melihat tutorial bermanfaat ini .


2

Omong-omong, jika rute Anda memiliki nama seperti:

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

Anda dapat menggunakan route()fungsi seperti ini:

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

Fungsi berguna lainnya:

$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

Periksa ini -

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

Ini bekerja untuk saya dan saya harap ini akan berhasil untuk Anda.


1

Anda dapat menggunakan fasad atau fungsi pembantu sesuai yang berikut.

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

Laravel menggunakan Komponen Symfony untuk Permintaan, Laravel logika internal sesuai berikut.

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

Saya menemukan cara lain untuk mendapatkan url dasar untuk menampilkan nilai variabel lingkungan APP_URL

env('APP_URL')

yang akan menampilkan url dasar seperti http: // domains_your // milikmu_website . berhati-hatilah karena menganggap bahwa Anda telah mengatur variabel lingkungan dalam file .env (yang ada di folder root).


0

Anda bisa mendapatkannya dari Request, di laravel 5

request()->getSchemeAndHttpHost();

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.