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

97

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

echo base_url();

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

Теги:
base-url

11 ответов

169
Лучший ответ

Вы можете использовать фасад 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('/');
    }
}
  • 3
    И, несмотря на его возможное появление из примера, это относительно корневого пути Laravel, поэтому, если вы установлены в /something/ он создаст правильный URL.
  • 1
    И работает на виду, спасибо
Показать ещё 3 комментария
76

Laravel < 5.2

echo url();

Laravel >= 5.2

echo url('/');

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

  • 4
    Не могли бы вы расширить этот ответ, включив в него объяснение, а не просто фрагмент кода?
  • 2
    Экзамен: у меня есть сайт на местном: localhost / abc. В Codeigniter: echo base_url (); => Я получаю localhost / abc В Laravel: echo url (); => Я тоже получаю localhost / abc .
Показать ещё 2 комментария
29

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

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

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

  • 3
    Примечание. Если ваш веб-сайт обслуживается по secure_url() https, вы можете использовать secure_url() таким же образом, и при этом будет создана ссылка https. Использование url() на сайте https будет по-прежнему создавать ссылку http.
  • 1
    Этот работал для меня. Также полезно знать синтаксис secure_url (). Благодарю.
Показать ещё 2 комментария
11

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

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

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

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

  • 0
    @sambellerose и вы хотите получить доступ к внутренним папкам / файлам, которые вы можете сделать url('/css/style.css')
10

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

asset('/');
  • 3
    Для меня это лучший <base href="{{ asset('/') }}" />
6

Это:

echo url('/');

И это:

echo asset('/');

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

2

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

  • 0
    Не уверен, почему за это проголосовали, так как он на самом деле работает, и никто не дал такой возможности?
  • 2
    Не мое отрицательное мнение, но я предполагаю, что причина в том, что вы не можете гарантировать, что имя вашего корневого маршрута будет «индексным» в каждом приложении.
1

Кстати, если у вашего маршрута есть такое имя:

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

1

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

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

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

1

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

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

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

1

Чтобы просто получить URL-адрес приложения, который вы настроили, вы можете использовать Config:: get ('app.url')

  • 0
    Это определение используется только в Laravel cli. app.url похоже, запасной вариант
  • 1
    Ну что ж, env ('APP_URL'), вероятно, будет лучшим вариантом.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню