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?

Inigo
la source

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('/');
    }
}
hannesvdvreken
la source
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

Nguyễn Thành Bồi
la source
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()

DrewT
la source
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') }}">
Sobin Augustine
la source
17

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

asset('/');
dan-klasson
la source
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

Akshay Khale
la source
@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 :)

GGadash
la source
3

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

CptChaos
la source
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".

Niladri Banerjee - Uttarpara
la source
3

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

Config::get('app.url')
Kenyon
la source
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 .

ITWitch
la source
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

闫 鹏程
la source
2

Vérifie ça -

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

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

msayubi76
la source
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;
}
Paresh Barad
la source
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).

Adeel Raza Azeemi
la source
0

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

request()->getSchemeAndHttpHost();
Soleil
la source
-1

J'ai également utilisé la fonction base_path () et cela a fonctionné

Minh Anh Vương
la source