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.