Загруженный логотип отображается только для вакансии пользователя, но поддельные работодатели теряют свои логотипы [закрPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Загруженный логотип отображается только для вакансии пользователя, но поддельные работодатели теряют свои логотипы [закр

Сообщение Anonymous »

Я создаю приложение для поиска вакансий с помощью Laravel 11 (следуя этому руководству по Laracasts).
Я заполнил базу данных 20 поддельными работодателями и вакансиями — у каждого из них был случайный логотип.
Поначалу это работало отлично.
Но когда я регистрирую нового пользователя и создаю новую вакансию с загрузкой логотипа, она отображается правильно для моей работы, но остальные посеянные работодатели теряют свои логотипы (они не показывают изображение).
Мои настройки:
  • Код: Выделить всё

    APP_ENV=local
    APP_DEBUG=true
    APP_URL=http://127.0.0.1:8000
    FILESYSTEM_DISK=public
    ASSET_URL="${APP_URL}/storage"
    DB_CONNECTION=sqlite
    
  • Код: Выделить всё

    EmployerFactory.php

    Код: Выделить всё

    class EmployerFactory extends Factory
    {
    public function definition(): array
    {
    return [
    'name' => fake()->company(),
    'logo' => 'logos/default-' . rand(1, 10) . '.jpg',
    'user_id' => User::factory(),
    ];
    }
    }
    
  • Код: Выделить всё

    resources/views/components/employer-logo.blade.php

    Код: Выделить всё

    @props(['employer', 'width' => 90])
    
    [img]{{ $employer-[/img]
    logo
    ? (Str::startsWith($employer->logo, 'http')
    ? $employer->logo
    : (Str::startsWith($employer->logo, 'logos/')
    ? asset($employer->logo)
    : asset('storage/' . $employer->logo)))
    : asset('logos/default-' . rand(1, 10) . '.jpg')) }}"
    alt="{{ $employer->name }} logo"
    class="rounded-xl"
    width="{{ $width }}"
    >
    
  • Код: Выделить всё

    resources/views/components/job-card.blade.php
Что происходит:
  • Когда я посещаю страницу вакансий после загрузки логотипа, отображается только мой загруженный логотип.
  • Остальные 20 поддельных вакансий не показывают изображения (тег не имеет допустимого src).
  • В базе данных старые фейковые работодатели имеют такие пути:

    Код: Выделить всё

    logos/default-8.jpg
    logos/default-3.jpg
    
  • Загруженный файл сохраняется следующим образом:

    Код: Выделить всё

    logos/B0GoHElRpVuZPNpKkk9IUWSsAz0q9YInQgjk9blh.jpg
    
Я уже запускал:

Код: Выделить всё

php artisan storage:link
php artisan view:clear
Логотипы физически существуют внутри:

Код: Выделить всё

public/logos/
public/storage/logos/
Чего я ожидаю
  • Поддельные работодатели по-прежнему должны показывать свои случайные логотипы по умолчанию из /public/logos.
  • Мой загруженный логотип должен быть взят из /storage/logos.
Что я пробовал
  • Изменение assets($employer->logo) в Storage::url($employer->logo)
  • Настройка ASSET_URL="${APP_URL}/storage"
  • Перемещение файлов между public/logos и хранилищем/app/public/logos
  • Очистка кеша и несколько представлений раз
Почему Laravel показывает только загруженный логотип, а не поддельные? Есть ли правильный способ обработки логотипов из /public/logos и /storage/logos вместе?

Подробнее здесь: https://stackoverflow.com/questions/798 ... heir-logos
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»