Изменить:
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
в базовом пути проекта.