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?

Inigo
sumber

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('/');
    }
}
hannesvdvreken
sumber
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

Nguyễn Thành Bồi
sumber
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()

DrewT
sumber
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') }}">
Sobin Augustine
sumber
17

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

asset('/');
dan-klasson
sumber
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

Akshay Khale
sumber
@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 :)

GGadash
sumber
3

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

CptChaos
sumber
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".

Niladri Banerjee - Uttarpara
sumber
3

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

Config::get('app.url')
Kenyon
sumber
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 .

ITWitch
sumber
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

闫 鹏程
sumber
2

Periksa ini -

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

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

msayubi76
sumber
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;
}
Paresh Barad
sumber
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).

Adeel Raza Azeemi
sumber
0

Anda bisa mendapatkannya dari Request, di laravel 5

request()->getSchemeAndHttpHost();
Soleil
sumber
-1

saya juga menggunakan base_path () fungsinya dan berhasil

Minh Anh Vương
sumber