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.