Laravel: obtenir l'URL de base


182

Question simple, mais la réponse semble assez difficile à trouver. Dans Codeigniter, je pourrais charger l'url helper puis simplement faire

echo base_url();

pour obtenir l'URL de mon site. Y a-t-il un équivalent à Laravel?

Réponses:


282

Vous pouvez utiliser la façade URL qui vous permet de faire des appels au générateur d'URL

Vous pouvez donc faire:

URL::to('/');

Vous pouvez également utiliser le conteneur d'application:

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

Ou injectez le 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
Et malgré son apparence possible de l'exemple, cela est relatif au chemin racine de Laravel, donc si vous êtes installé, /something/cela créera la bonne URL.
ceejayoz

@deFreitas et #ceejayoz comment utiliser URL :: to avec la localisation laravel?
Mubashar Iqbal

1
@MubasharIqbal Si j'ai compris votre question, {{URL::to('/my-page.html')}}à la vue et echo URL::to('/my-page.html');au code
deFreitas

gentil gestionnaire, dans mon cas:, <a class="button is-primary" href="<?= URL::to('/'); ?>/atencion/reporte" target="_blank">merci!
joelmez4

157

Laravel <5,2

echo url();

Laravel> = 5,2

echo url('/');

J'espère que cela vous aide


4
Pourriez-vous développer cette réponse pour inclure une explication au lieu d'un simple extrait de code?

2
Examen: J'ai le site en local: localhost / abc Dans Codeigniter: echo base_url (); => J'obtiens localhost / abc Dans Laravel: echo url (); => Je reçois aussi localhost / abc .
Nguyễn Thành Bồi

1
Utilisez ceci pour une URL avec segmentation: url (). '/'. \ Request :: segment (1). '/'. \ Request :: segment (2)
0x1ad2

20
Notez que cela ne fonctionne plus dans la version 5.2: github.com/laravel/framework/issues/11479 Vous pouvez url('/')cependant utiliser à la place
4lun

1
asset('/')me semble mieux car il a une barre oblique de fin qui est nécessaire dans la base href.
vintproykt

47

Pour Laravel 5, j'utilise normalement:

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

Je crois comprendre que l'utilisation de la url()fonction appelle la même chose FacadequeURL::to()


4
Remarque: si votre site Web est servi sur https, vous pouvez utiliser la secure_url()fonction de la même manière, ce qui produira un lien https. L'utilisation url()sur un site https produira toujours un lien http.
DrewT

1
Celui-ci a fonctionné pour moi. Il est également utile de connaître la syntaxe secure_url (). Merci.
jimmyplaysdrums

1
J'utilise Lumen 5.4. Il url()génère un lien http ou https basé sur le protocole de la requête. D'un autre côté secure_url()n'existe pas. Cela a-t-il également changé dans Laravel 5.4?
Andreas Linnert

Non, cela fait partie de Larvel 5.4. Je ne peux pas vraiment commenter car je n'ai jamais utilisé Lumen mais la documentation pour Laravel 5.4 secure_url()est disponible ici: laravel.com/docs/5.4/helpers#method-secure-url
DrewT

23

Mises à jour de la documentation de la version 2018 de Laravel (5.7) avec plus de fonctions url () et son utilisation.

Question: Pour obtenir l'URL du site dans Laravel?

C'est une sorte de question générale, donc nous pouvons la scinder.

1. Accéder à l'URL de base

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

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

2. Accéder à l'URL actuelle

// 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 des itinéraires nommés

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

4. URL vers les ressources (publiques)

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

5. URL de fichier

use Illuminate\Support\Facades\Storage;

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

Chacune de ces méthodes est également accessible via la façade URL:

use Illuminate\Support\Facades\URL;

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

Comment appeler ces fonctions d'assistance à partir du modèle de lame (vues) avec l'utilisation.

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

Pour le faire fonctionner avec des URL pas jolies, je devais faire:

asset('/');

3
À mon besoin, c'est le meilleur<base href="{{ asset('/') }}" />
rneves

Bravo à vous! Il s'intègre parfaitement à <base href="..."/>cause de la barre oblique de fin
vintproykt

13

Laravel fournit un tas de fonctions d'assistance et pour vos besoins, vous pouvez simplement

utiliser la fonction url () de Laravel Helpers

mais dans le cas de Laravel 5.2 vous devrez utiliser url ('/')

voici la liste de toutes les autres fonctions d'assistance de Laravel


@sambellerose et voulez-vous accéder aux dossiers / fichiers internes que vous pouvez faireurl('/css/style.css')
Akshay Khale

13

Ce:

echo url('/');

Et ça:

echo asset('/');

les deux ont affiché l'URL de la maison dans mon cas :)


3

Une autre possibilité: {{ URL::route('index') }}


Vous ne savez pas pourquoi cela a été rejeté, car cela fonctionne réellement et personne n'a également donné l'option?
CptChaos

2
Ce n'est pas mon vote négatif, mais j'imagine que la raison est que vous ne pouvez pas garantir que le nom de votre route racine soit "indexé" dans chaque application.
Jonathan

3

Vous pouvez également utiliser URL :: to ('/') pour afficher l'image dans Laravel. Veuillez voir ci-dessous:

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

Supposons que votre image soit stockée sous "public / images".


3

Pour obtenir simplement l'URL de l'application que vous avez configurée, vous pouvez utiliser:

Config::get('app.url')

Cette définition n'est utilisée que dans Laravel cli. app.urlil semble être une
solution de

1
Eh bien plus, env ('APP_URL') serait probablement la meilleure option.
Kenyon

2

J'ai utilisé ceci et cela a fonctionné pour moi dans Laravel 5.3.18:

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

REMARQUE IMPORTANTE: cela ne fonctionnera que si vous avez déjà supprimé "public" de votre URL. Pour ce faire, vous pouvez consulter ce didacticiel utile .


2

À propos, si votre itinéraire a un nom comme:

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

Vous pouvez utiliser la route()fonction comme ceci:

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

Autres fonctions utiles:

$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

Vérifie ça -

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

Cela fonctionne pour moi et j'espère que cela fonctionnera pour vous.


1

Vous pouvez utiliser des façades ou une fonction d'assistance comme suit.

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

Laravel utilisant le composant Symfony pour la requête, la logique interne de Laravel comme suit.

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

J'ai trouvé un autre moyen d'obtenir simplement l'URL de base pour afficher la valeur de la variable d'environnement APP_URL

env('APP_URL')

qui affichera l'url de base comme http: // domaines_votre // votre_site_web . attention, cela suppose que vous avez défini la variable d'environnement dans le fichier .env (présent dans le dossier racine).


0

vous pouvez l'obtenir à partir de Request, à laravel 5

request()->getSchemeAndHttpHost();

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.