Laravel: Temel URL'yi al


183

Basit bir soru, ama cevap gelmek oldukça zor görünüyor. Codeigniter'de, url yardımcısını yükleyebilir ve sonra

echo base_url();

sitemin URL'sini almak için. Laravel'de bir eşdeğeri var mı?

Yanıtlar:


282

Sen hiç yapmanız aramaları olanak tanıyan URL cephe kullanabilirsiniz URL jeneratör

Böylece şunları yapabilirsiniz:

URL::to('/');

Uygulama kapsayıcısını da kullanabilirsiniz:

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

Veya UrlGenerator'ı enjekte edin:

<?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
Ve örnekteki olası görünümüne rağmen, bu, Laravel'in kök yoluna göredir, bu yüzden eğer yüklerseniz /something/doğru URL'yi yapar.
ceejayoz

@deFreitas ve #ceejayoz URL :: ile laravel yerelleştirmesi nasıl kullanılır?
Mubashar Iqbal

1
@MubasharIqbal Sorunuzu anladım {{URL::to('/my-page.html')}}, görüşte ve echo URL::to('/my-page.html');kodda
deFreitas

güzel işleyici, benim durumumda: <a class="button is-primary" href="<?= URL::to('/'); ?>/atencion/reporte" target="_blank">teşekkürler!
joelmez4

157

Laravel <5.2

echo url();

Laravel> = 5.2

echo url('/');

Umarım bu sana yardımcı olur


4
Bu yanıtı yalnızca kod pasajı yerine bir açıklama içerecek şekilde genişletebilir misiniz?

2
Sınav: Yerel site var: localhost / abc Codeigniter: echo base_url (); => Localhost / abc alıyorum Laravel'de: echo url (); => Ben de localhost / abc alıyorum .
Nguy Thn Fotoğraf Ekle

1
Segmentasyona sahip bir url için bunu kullanın: url (). '/'. \ Request :: segment (1). '/'. \ Request :: segment (2)
0x1ad2

20
Bunun artık 5.2'de çalışmadığını unutmayın: github.com/laravel/framework/issues/11479url('/') Bununla birlikte kullanabilirsiniz
4lun

1
asset('/')bana göre daha iyi görünüyor çünkü taban href'de gerekli olan sondaki eğik çizgi var.
vintproykt

47

Laravel 5 için normalde şunu kullanıyorum:

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

Ben kullanarak o anlayış olduğum url()işlevi aynı çağırıyor FacadeolarakURL::to()


4
Not: Web siteniz https üzerinden sunulursa secure_url()işlevi aynı şekilde kullanabilirsiniz ve bu bir https bağlantısı oluşturur. url()Bir https sitesinde kullanmak yine de bir http bağlantısı oluşturur.
DrewT

1
Bu benim için çalıştı. Ayrıca secure_url () sözdizimini bilmek de yararlıdır. Teşekkürler.
jimmyplaysdrums

1
Lumen 5.4 kullanıyorum. Orada url()isteğin protokolüne dayanan bir http veya https bağlantı oluşturur. Öte yandan secure_url()mevcut değil. Bu Laravel 5.4'te de değişti mi?
Andreas Linnert

Hayır, Larvel 5.4'ün bir parçası. Ben Lumen hiç kullanmadım ama 5.4 Laravel belgeleri için secure_url()burada yorum yapamam çünkü gerçekten yorum yapamam : laravel.com/docs/5.4/helpers#method-secure-url
DrewT

23

2018 Laravel sürümünün (5.7) belgelerinden bazı daha fazla url () işlevleriyle güncellemeler ve kullanımı.

Soru: Sitenin URL'sini Laravel'de almak için?

Bu biraz genel bir soru, bu yüzden onu bölebiliriz.

1. Temel URL'ye Erişim

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

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

2. Mevcut URL'ye Erişim

// 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. Adlandırılmış Rotalar İçin URL'ler

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

4. Varlıklara Yönelik URL'ler (Genel)

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

5. Dosya URL'leri

use Illuminate\Support\Facades\Storage;

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

Bu yöntemlerin her birine URL cephesinden de erişilebilir:

use Illuminate\Support\Facades\URL;

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

Bu Yardımcı işlevler kullanımla blade Şablonu'ndan (Görünümler) nasıl çağrılır.

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

Güzel olmayan URL'lerle çalışmasını sağlamak için yapmam gerekiyordu:

asset('/');

3
Benim ihtiyacım için bu iyi<base href="{{ asset('/') }}" />
rneves

Şeref! <base href="..."/>Sondaki eğik çizgi nedeniyle tam olarak uyuyor
vintproykt

13

Laravel birçok yardımcı işlev sunar ve gereksiniminiz için

Laravel Helpers'ın url () işlevini kullanma

ancak söz konusu laravel 5.2 Kullanmak zorunda kalacak url ( '/')

Burada laravel diğer tüm yardımcı işlevlerini listesidir


@sambellerose ve yapabileceğiniz iç klasörlere / dosyalara erişmek mi istiyorsunuzurl('/css/style.css')
Akshay Khale

13

Bu:

echo url('/');

Ve bu:

echo asset('/');

her ikisi de benim durumumda ev url görüntülenen :)


3

Bir başka olasılık: {{ URL::route('index') }}


Bunun neden çalıştığını ve hiç kimsenin de seçeneği sunmadığından neden aşağı düştüğünden emin değil misiniz?
CptChaos

2
Benim downvote değil ama nedeni her uygulamada kök dizin adlandırma "dizin" olarak garanti edemez olduğunu tahmin ediyorum.
Jonathan

3

Laravel'de resmi görüntülemek için URL :: to ('/') öğesini de kullanabilirsiniz. Lütfen aşağıya bakın:

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

Resminizin "genel / resimler" altında depolandığını varsayın.


3

Yalnızca yapılandırdığınız uygulama URL'sini almak için şunları kullanabilirsiniz:

Config::get('app.url')

Bu tanım sadece Laravel cli. app.urlbir yedek gibi görünüyor
Wallace Maxters

1
Artık env ('APP_URL') muhtemelen en iyi seçenek olacaktır.
Kenyon

2

Bunu kullandım ve Laravel 5.3.18'de benim için çalıştı:

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

ÖNEMLİ NOT: Bu yalnızca URL'nizden "herkese açık" olanı kaldırdığınızda çalışır. Bunu yapmak için, bu yararlı eğiticiye göz atabilirsiniz .


2

Bu arada, rotanızın aşağıdaki gibi bir adı varsa:

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

Bu route()işlevi aşağıdaki gibi kullanabilirsiniz :

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

Diğer faydalı fonksiyonlar:

$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

Şuna göz at -

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

Bu benim için çalışıyor ve umarım senin için de çalışır.


1

Cepheleri veya yardımcı işlevi aşağıdaki gibi kullanabilirsiniz.

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

Laravel Symfony Bileşenini Talep için kullanarak, Laravel dahili mantığı aşağıdaki gibi.

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

Ben sadece APP_URL ortam değişkeninin değerini görüntülemek için temel url almak için başka bir yol buldum

env('APP_URL')

http: // domains_your // yours_website gibi temel URL'yi görüntüler . dikkat edin .env dosyasında (kök klasöründe bulunan) ortam değişkenini ayarladığınızı varsayar.


0

laravel 5 adresinden Request'den alabilirsiniz.

request()->getSchemeAndHttpHost();

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.