Laravel: получить базовый URL

Простой вопрос, но ответ найти довольно сложно. В Codeigniter я мог загрузить вспомогательный URL-адрес, а затем просто выполнить

echo base_url();

чтобы получить URL-адрес моего сайта. Есть ли эквивалент в Laravel?


person Inigo    schedule 14.04.2014    source источник


Ответы (18)


Вы можете использовать фасад URL, который позволяет вам вызывать генератор URL

Итак, вы можете:

URL::to('/');

Вы также можете использовать контейнер приложения:

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

Или введите 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('/');
    }
}
person hannesvdvreken    schedule 14.04.2014
comment
И, несмотря на его возможное появление из примера, это относительно корневого пути Laravel, поэтому, если вы установили /something/, он сделает правильный URL. - person ceejayoz; 14.04.2014
comment
@deFreitas и #ceejayoz, как использовать URL :: to с локализацией laravel? - person Mubashar Iqbal; 31.03.2018
comment
@MubasharIqbal Если я понял ваш вопрос, {{URL::to('/my-page.html')}} на просмотре и echo URL::to('/my-page.html'); на коде - person deFreitas; 01.04.2018
comment
хороший обработчик, в моем случае: <a class="button is-primary" href="<?= URL::to('/'); ?>/atencion/reporte" target="_blank">, спасибо! - person joelmez4; 17.12.2018

Laravel ‹5.2

echo url();

Laravel> = 5.2

echo url('/');

Надеюсь, это поможет тебе

person Nguyễn Thành Bồi    schedule 12.11.2014
comment
Не могли бы вы расширить этот ответ, включив в него объяснение, а не просто фрагмент кода? - person ; 12.11.2014
comment
Экзамен: у меня есть локальный сайт: localhost / abc В Codeigniter: echo base_url (); = ›Я получаю localhost / abc В Laravel: echo url (); = ›Я тоже получаю localhost / abc. - person Nguyễn Thành Bồi; 13.11.2014
comment
Используйте это для URL с сегментацией: url (). '/'. \ Request :: segment (1). '/'. \ Request :: segment (2) - person 0x1ad2; 27.11.2014
comment
Обратите внимание, что это больше не работает в версии 5.2: github.com/laravel/framework/issues/11479 Однако вместо этого вы можете использовать url('/') - person 4lun; 23.12.2015
comment
asset('/') кажется мне лучше, потому что у него есть завершающий слэш, который необходим в базовом href. - person vintproykt; 09.04.2019
comment
Я попробовал url (/ some / route) в routes / web.php, но он все еще не работает на развернутом сервере. - person Sebastian; 18.11.2020

Для Laravel 5 я обычно использую:

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

Я понимаю, что использование функции url() вызывает тот же Facade, что и URL::to()

person DrewT    schedule 30.11.2015
comment
Примечание: если ваш веб-сайт обслуживается через https, вы можете использовать функцию secure_url() таким же образом, и это создаст ссылку https. Использование url() на сайте https по-прежнему приведет к созданию ссылки http. - person DrewT; 15.12.2016
comment
Этот сработал для меня. Также полезно знать синтаксис secure_url (). Спасибо. - person jimmyplaysdrums; 18.01.2017
comment
Я использую Lumen 5.4. Там url() генерирует ссылку http или https в зависимости от протокола запроса. С другой стороны secure_url() не существует. Изменилось ли это и в Laravel 5.4? - person Andreas Linnert; 18.02.2017
comment
Нет, это часть Larvel 5.4. Я не могу комментировать, потому что я никогда не использовал Lumen, но документация Laravel 5.4 для secure_url() доступна здесь: laravel.com/docs/5.4/helpers#method-secure-url - person DrewT; 20.02.2017

Обновления документации по версии Laravel 2018 (5.7) с некоторыми дополнительными функциями url () и их использованием.

Вопрос: Чтобы получить URL-адрес сайта в Laravel?

Это своего рода общий вопрос, поэтому мы можем его разделить.

1. Доступ к базовому URL

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

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

2. Доступ к текущему URL

// 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-адреса для именованных маршрутов

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

4. URL-адреса ресурсов (общедоступные)

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

5. URL-адреса файлов

use Illuminate\Support\Facades\Storage;

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

К каждому из этих методов также можно получить доступ через фасад URL:

use Illuminate\Support\Facades\URL;

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

Как вызвать эти вспомогательные функции из шаблона лезвия (представлений) с использованием.

// 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') }}">
person Sobin Augustine    schedule 13.10.2018

Чтобы заставить его работать с некрасивыми URL-адресами, мне пришлось сделать:

asset('/');
person dan-klasson    schedule 04.12.2014
comment
На мой взгляд, это лучший вариант <base href="{{ asset('/') }}" /> - person rneves; 27.10.2015
comment
Престижность вам! Он помещается прямо в <base href="..."/> из-за завершающей косой черты - person vintproykt; 09.04.2019

Этот:

echo url('/');

И это:

echo asset('/');

в моем случае оба отображали домашний URL :)

person GGadash    schedule 12.08.2016

Laravel предоставляет множество вспомогательных функций, и для ваших требований вы можете просто

используйте функцию url () помощников Laravel

но в случае Laravel 5.2 вам придется использовать url ('/')

здесь - это список всех других вспомогательных функций Laravel.

person Akshay Khale    schedule 20.03.2016
comment
@sambellerose и хотите ли вы получить доступ к внутренним папкам / файлам, которые вы можете сделать url('/css/style.css') - person Akshay Khale; 06.05.2016

Чтобы просто получить URL-адрес приложения, который вы настроили, вы можете использовать:

Config::get('app.url')
person Kenyon    schedule 01.12.2015
comment
Это определение используется только в Laravel cli. app.url похоже, что это запасной вариант - person Wallace Maxters; 24.08.2016
comment
Что ж, env ('APP_URL'), вероятно, будет лучшим вариантом. - person Kenyon; 25.08.2016

Другая возможность: {{ URL::route('index') }}

person CptChaos    schedule 19.05.2016
comment
Не знаете, почему это было отклонено, поскольку это действительно работает, и никто не дал такой возможности? - person CptChaos; 30.07.2016
comment
Не мой голос против, но я предполагаю, что причина в том, что вы не можете гарантировать, что имя вашего корневого маршрута будет индексироваться в каждом приложении. - person Jonathan; 09.08.2016

Вы также можете использовать URL :: to ('/') для отображения изображения в Laravel. См. Ниже:

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

Предположим, что ваше изображение хранится в папке «public / images».

person Niladri Banerjee - Uttarpara    schedule 11.02.2017

Я использовал это, и это сработало для меня в Laravel 5.3.18:

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

ВАЖНОЕ ПРИМЕЧАНИЕ. Это будет работать только в том случае, если вы уже удалили «общедоступный» из своего URL-адреса. Для этого вы можете ознакомиться с этим полезным руководством.

person ITWitch    schedule 17.10.2016

Кстати, если у вашего маршрута есть название вроде:

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

Вы можете использовать функцию route() следующим образом:

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

Другие полезные функции:

$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

person 闫鹏程    schedule 27.05.2017

Вы можете использовать фасады или вспомогательную функцию, как показано ниже.

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

Laravel использует компонент Symfony для запроса, внутреннюю логику Laravel, как показано ниже.

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;
}
person Paresh Barad    schedule 03.08.2018

Проверь это -

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

Это работает для меня, и я надеюсь, что это сработает для вас.

person msayubi76    schedule 25.11.2019

Я нашел другой способ просто получить базовый URL-адрес для отображения значения переменной среды APP_URL

env('APP_URL')

который отобразит базовый URL-адрес, например http://domains_your//yours_website. будьте осторожны, предполагается, что вы установили переменную среды в файле .env (который находится в корневой папке).

person Adeel Raza Azeemi    schedule 15.11.2018

вы можете получить его из запроса на laravel 5

request()->getSchemeAndHttpHost();
person Soleil    schedule 19.12.2019

Есть несколько способов:

  • request()->getSchemeAndHttpHost()

  • url('/')

  • asset('')

  • $_SERVER['SERVER_NAME']

person X 47 48 - IR    schedule 28.04.2021

Я также использовал функцию base_path(), и она у меня сработала.

person Minh Anh Vương    schedule 06.04.2020