Актив Laravel с поддоменом - PullRequest
       0

Актив Laravel с поддоменом

0 голосов
/ 01 ноября 2018

Мне нужно, чтобы актив () работал без записи имени субдомена:

Мой код:

asset('images/logos/logo-partner-5.png')

Код, который работает, но не хочет:

asset('subdomain/images/logos/logo-partner-5.png')

Есть предложения?

может быть, не использовать asset () , но другую функцию? существует другой способ?

или как настроить asset () path?

1 Ответ

0 голосов
/ 03 ноября 2018

Изменить:

Laravel 5.7.14 будет поставляться с опцией конфигурации asset_url, чтобы сделать именно это.

Оригинальный ответ ниже:


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

function cdn_asset($path, $secure = null) {
    return app('url')->assetFrom(config('app.cdn_subdomain'), $path, $secure);
}

И поместите значение конфигурации в config/app.php:

'cdn_subdomain' => 'http://subdomain.example.com',

Использование:

<img src="{{ cdn_asset('images/logos/logo-partner-5.png') }}">

Я назвал функцию cdn_asset(), потому что это кажется наиболее распространенной ситуацией для обслуживания активов из другого домена, но вы можете называть это как хотите.


Если вы всегда хотите всех активов, обслуживаемых с субдомена, вы можете переопределить помощника активов Laravel. Это может немного испачкаться:

Если вы заглянете в Illuminate\Foundation\helpers.php, вы увидите, что Laravel проверяет, существует ли функция перед ее созданием:

if (! function_exists('asset')) {
    function asset() { ... }
}

Это означает, что вы можете определить функцию раньше, чем Laravel, и она будет использовать вашу вместо:

function asset($path, $secure = null) {
    return app('url')->assetFrom('http://subdomain.example.com', $path, $secure);
}

Если вы создаете файл с именем /app/helpers.php для определения этой функции, вам потребуется его , прежде чем Laravel загрузит файл /vendor/autoload.php. Начиная с Laravel 5.7 это происходит в /public/index.php. Добавьте свою собственную строку, прежде чем это произойдет:

require __DIR__.'/../app/helpers.php'; // this is yours
require __DIR__.'/../vendor/autoload.php';

Возможно, вы захотите указать это в файле artisan в базовом пути проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...