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

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

echo base_url();

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

12 ответов


вы можете использовать фасад 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('/');
    }
}

что Laravel

echo url();

Laravel > = 5.2

echo url('/');

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


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

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

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


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

использовать URL-адрес() функция помощников Laravel

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

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


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

asset('/');

Это:

echo url('/');

и так:

echo asset('/');

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


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


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


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

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

важное примечание: это будет работать только тогда, когда вы уже удалили "public" из своего URL. Для этого вы можете проверить этот полезный учебник.


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

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

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


кстати, если ваш маршрут имеет название типа:

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

можно использовать такой:

<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


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

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;
}