Laravel 5.6: ресурс не загружается на одном маршруте

Я использую в своем макете предварительный загрузчик 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'),
    ],

],

];

Почему я столкнулся с этой проблемой и как лучше всего ее решить?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
29
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В вашем образе 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 (хотя цикл не останавливается, я изучу это). Спасибо за решение проблемы.

Hammadr097 11.08.2018 17:13

Другие вопросы по теме