web-dev-qa-db-fra.com

Laravel: Obtenir l'URL de base

Question simple, mais la réponse semble assez difficile à trouver. Dans Codeigniter, je pouvais charger l’aide url puis faire simplement

echo base_url();

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

144
Inigo

Vous pouvez utiliser la façade URL qui vous permet d’appeler le générateur URL .

Alors tu peux 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 générateur d’URL:

<?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('/');
    }
}
230
hannesvdvreken

Laravel <5.2

echo url();

Laravel> = 5.2

echo url('/');

J'espère que cela vous aide

112

Pour Laravel 5, j'utilise normalement:

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

Je crois comprendre que l’utilisation de la fonction url() appelle la même Facade que URL::to() 

42
DrewT

Laravel fournit un tas de fonctions d’aide 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 ('/')

here est la liste de toutes les autres fonctions d'assistance de Laravel

12
Akshay Khale

Ce:

echo url('/');

Et ça:

echo asset('/');

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

11
GGadash

Pour que cela fonctionne avec des URL non jolies, je devais le faire:

asset('/');
10
dan-klasson

Mises à jour de la documentation de la version 2018 de Laravel (5.7) avec quelques fonctions supplémentaires et son utilisation.

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

C'est une sorte de question générale, nous pouvons donc 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 pour les itinéraires nommés

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

4. URLs at Assets (Public)

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

5. URL de fichiers

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 d'URL:

use Illuminate\Support\Facades\URL;

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

Comment appeler ces fonctions d'assistance à partir de la lame Template (Views) avec 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') }}">
5
Sobin Augustine

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

3
CptChaos

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

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

Laravel utilisant Symfony Component for Request, logique interne de Laravel selon Suivant.

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;
}
1
Paresh Barad

Vous pouvez également utiliser URL :: to ('/') pour afficher une image dans Laravel. S'il vous plaît voir ci-dessous:

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

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

À 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 fonction route() 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

1
闫鹏程

Pour obtenir simplement l'URL de l'application que vous avez configurée, vous pouvez utiliser Config :: get ('app.url').

1
Kenyon

Je l'ai utilisé 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 tutoriel utile .

1
ITWitch

J'ai trouvé un autre moyen de simplement obtenir 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: // domain_your // yours_website . Méfiez-vous, cela suppose que vous avez défini la variable d'environnement dans le fichier .env (présent dans le dossier racine).

0
Adeel