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

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

Сообщение Anonymous »

Я создаю приложение для поиска вакансий, используя Laravel 11 (следуя [этому руководству по Laracasts](

https://laracasts.com/series/30-days-to ... pisodes/30

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

[code].env[/code]

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

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

[code]EmployerFactory.php[/code]

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

class EmployerFactory extends Factory
{
public function definition(): array
{
return [
'name' => fake()->company(),
'logo' => 'logos/default-' . rand(1, 10) . '.jpg',
'user_id' => User::factory(),
];
}
}

[code]resources/views/components/employer-logo.blade.php[/code]

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

@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 }}"
>

[code]resources/views/components/job-card.blade.php[/code]

🔹 Что происходит
  • Когда я посещаю страницу вакансий после загрузки логотипа,
    появляется только мой загруженный логотип.
  • Остальные 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 вместе?

Был бы признателен, если бы кто-нибудь объяснил правильную логику или Blade синтаксис для этого случая.

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

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

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

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

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

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