Я использую в своем макете предварительный загрузчик gif, который размещен в public / img и используется в следующей строке кода:
<img src = "img/preloader.gif" alt = "Preloader">
Это отлично работает для всех маршрутов, кроме одного, указанный маршрут определяется следующим образом:
Route::get('/test/{name}', function ($name) {
return view('test')->with('name',$name); });
Вот "тестовый" вид:
@extends('layouts.app')
@section('content')
<section>
<div>
<h1>{{$name}}</h1>
</div>
</section>
@endsection
Наконец, вот мой слегка измененный файл filesystems.php, в котором был изменен local:
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Filesystem Disk
|--------------------------------------------------------------------------
|
| Here you may specify the default filesystem disk that should be used
| by the framework. The "local" disk, as well as a variety of cloud
| based disks are available to your application. Just store away!
|
*/
'default' => env('FILESYSTEM_DRIVER', 'local'),
/*
|--------------------------------------------------------------------------
| Default Cloud Filesystem Disk
|--------------------------------------------------------------------------
|
| Many applications store files both locally and in the cloud. For this
| reason, you may specify a default "cloud" driver here. This driver
| will be bound as the Cloud disk implementation in the container.
|
*/
'cloud' => env('FILESYSTEM_CLOUD', 's3'),
/*
|--------------------------------------------------------------------------
| Filesystem Disks
|--------------------------------------------------------------------------
|
| Here you may configure as many filesystem "disks" as you wish, and you
| may even configure multiple disks of the same driver. Defaults have
| been setup for each driver as an example of the required options.
|
| Supported Drivers: "local", "ftp", "sftp", "s3", "rackspace"
|
*/
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('../public/img/uploads/'),
],
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL'),
],
],
];
Почему я столкнулся с этой проблемой и как лучше всего ее решить?






В вашем образе src используется что-то, называемое относительный URI, которое, по сути, говорит: «возьмите текущий URI и добавьте его в его конец».
Когда вы находитесь на домашней странице example.com, ваш путь к образу - example.com/img/preloader.gif, что является правильным.
Как только вы перейдете к более глубокому URI с более чем одним сегментом, например example.com/test/foobar, URI образа становится example.com/test/img/preloader.gif, что явно неверно.
Самый простой и рекомендуемый способ решить эту проблему в Laravel - использовать Помощники asset() или secure_asset(). Это поможет сгенерировать абсолютный URI для изображения / ресурса и будет правильным независимо от того, на какой странице вашего приложения находится пользователь.
<img src = "{!! asset('img/preloader.gif') !!}" alt = "Preloader">
То, что вы объяснили, имеет смысл, теперь, после внесения необходимых изменений, загружается ресурс предварительного загрузчика gif (хотя цикл не останавливается, я изучу это). Спасибо за решение проблемы.