Laravel: ottieni l'URL di base


182

Domanda semplice, ma la risposta sembra abbastanza difficile da trovare. In Codeigniter, potrei caricare l'helper helper e semplicemente farlo

echo base_url();

per ottenere l'URL del mio sito. C'è un equivalente in Laravel?

Risposte:


282

È possibile utilizzare la facciata dell'URL che consente di effettuare chiamate al generatore di URL

Quindi puoi fare:

URL::to('/');

È inoltre possibile utilizzare il contenitore dell'applicazione:

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

O iniettare 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
E nonostante il suo possibile aspetto dall'esempio, questo è relativo al percorso radice del Laravel, quindi se sei installato in /something/esso creerà l' URL giusto.
Ceejayoz,

@deFreitas e #ceejayoz come usare URL :: to con localizzazione laravel?
Mubashar Iqbal

1
@MubasharIqbal Se ho capito la tua domanda, {{URL::to('/my-page.html')}}a vista e echo URL::to('/my-page.html');al codice
deFreitas

simpatico gestore, nel mio caso: <a class="button is-primary" href="<?= URL::to('/'); ?>/atencion/reporte" target="_blank">grazie!
joelmez4,

157

Laravel <5.2

echo url();

Laravel> = 5.2

echo url('/');

Spero che questo ti aiuti


4
Potresti espandere questa risposta per includere una spiegazione anziché solo uno snippet di codice?

2
Esame: ho un sito in locale: localhost / abc In Codeigniter: echo base_url (); => Ottengo localhost / abc In Laravel: echo url (); => Ottengo anche localhost / abc .
Nguyễn Thành Bồi

1
Usa questo per un url con segmentazione: url (). '/'. \ Request :: segment (1). '/'. \ Request :: segment (2)
0x1ad2

20
Si noti che questo non funziona più in 5.2: github.com/laravel/framework/issues/11479 È possibile utilizzare url('/')invece
4lun

1
asset('/')mi sembra migliore perché ha una barra finale che è necessaria in base href.
vintproykt

47

Per Laravel 5 normalmente utilizzo:

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

Sono consapevole che l'utilizzo della url()funzione sta chiamando lo stesso FacadediURL::to()


4
Nota: se il tuo sito Web viene pubblicato su HTTPS, puoi utilizzare la secure_url()funzione allo stesso modo e questo produrrà un collegamento HTTPS. L'utilizzo url()su un sito https produrrà comunque un collegamento http.
Estratto il

1
Questo ha funzionato per me. Utile anche per conoscere la sintassi secure_url (). Grazie.
jimmyplaysdrums,

1
Sto usando Lumen 5.4. Viene url()generato un collegamento http o https in base al protocollo della richiesta. D'altra parte secure_url()non esiste. Questo cambiamento è cambiato anche in Laravel 5.4?
Andreas Linnert,

No, fa parte di Larvel 5.4. Non posso davvero commentare perché non ho mai usato Lumen ma la documentazione di Laravel per 5.4 secure_url()è disponibile qui: laravel.com/docs/5.4/helpers#method-secure-url
DrewT

23

Aggiornamenti dalla documentazione della versione Laravel (5.7) del 2018 con alcune altre funzioni url () e relativo utilizzo.

Domanda: per ottenere l'URL del sito in Laravel?

Questa è una specie di domanda generale, quindi possiamo dividerla.

1. Accesso all'URL di base

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

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

2. Accesso all'URL corrente

// 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 per percorsi denominati

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

4. URL delle risorse (pubblici)

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

5. URL dei file

use Illuminate\Support\Facades\Storage;

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

È possibile accedere a ciascuno di questi metodi tramite la facciata dell'URL:

use Illuminate\Support\Facades\URL;

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

Come chiamare queste funzioni di supporto dal modello di lama (viste) con l'uso.

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

Per farlo funzionare con URL non carini ho dovuto fare:

asset('/');

3
Per la mia esigenza, questo è il migliore<base href="{{ asset('/') }}" />
reves

Complimenti a te! Si adatta perfettamente a <base href="..."/>causa della barra finale
vintproykt

13

Laravel offre un sacco di funzioni di supporto e per le tue esigenze puoi semplicemente

usa la funzione url () di Laravel Helpers

ma in caso di Laravel 5.2 dovrai usare url ('/')

ecco l'elenco di tutte le altre funzioni di supporto di Laravel


@sambellerose e vuoi accedere a cartelle / file interni che puoi fareurl('/css/style.css')
Akshay Khale

13

Questo:

echo url('/');

E questo:

echo asset('/');

entrambi hanno mostrato l'URL di casa nel mio caso :)


3

Un'altra possibilità: {{ URL::route('index') }}


Non sei sicuro del motivo per cui questo è stato sottoposto a downgrade, in quanto funziona davvero e nessuno ha dato anche l'opzione?
CptChaos,

2
Non il mio downvote, ma immagino che il motivo sia che non puoi garantire che la denominazione del tuo percorso di root sia "indice" in ogni app.
Jonathan,

3

Puoi anche usare URL :: to ('/') per visualizzare l'immagine in Laravel. Vedi sotto:

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

Supponiamo che l'immagine sia archiviata in "pubblico / immagini".


3

Per ottenere l'URL dell'app che hai configurato puoi utilizzare:

Config::get('app.url')

Questa definizione è utilizzata solo in Laravel cli. app.urlsembra essere un fallback
Wallace Maxters,

1
Bene, env ('APP_URL') sarebbe probabilmente l'opzione migliore.
Kenyon,

2

L'ho usato e ha funzionato per me in Laravel 5.3.18:

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

NOTA IMPORTANTE: funzionerà solo quando hai già rimosso "pubblico" dal tuo URL. Per fare ciò, puoi dare un'occhiata a questo utile tutorial .


2

A proposito, se il tuo percorso ha un nome come:

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

Puoi usare la route()funzione in questo modo:

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

Altre funzioni utili:

$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

Controllare questo -

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

Questo funziona per me e spero che funzionerà per te.


1

È possibile utilizzare le facciate o la funzione di supporto come indicato di seguito.

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

Laravel utilizza Symfony Component per Request, logica interna Laravel come segue.

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

Ho trovato un altro modo per ottenere l'URL di base per visualizzare il valore della variabile d'ambiente APP_URL

env('APP_URL')

che visualizzerà l'URL di base come http: // domains_your // yours_website . attenzione, presuppone che tu abbia impostato la variabile d'ambiente nel file .env (che è presente nella cartella principale).


0

puoi ottenerlo da Request, su laravel 5

request()->getSchemeAndHttpHost();

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.