#php #laravel #laravel-5 #lumen #lumen-5.2
#php #laravel #laravel-5 #lumen #lumen-5.2
Вопрос:
Недавно я выполнил новую установку Lumen framework и начал создавать сайт на его основе. Да, я знаю, что lumen предназначен только для API, но, пожалуйста, помогите мне с этим.
Я разместил все свои представления внутри /resources/views и мои шаблоны внутри /resources/views/templates .
Теперь, поскольку мне нужно было где-то разместить [css/ js /images], я подумал, что было бы неплохо разместить все это в public/assets/[css/js /images] .
Теперь в моем макете, когда я пытаюсь включить css, я использую что-то вроде этого —
<link href="{{ url('assets/css/something.css') }}">
и она работает, выдавая на выходе что-то вроде этого —
<link href="localhost/assets/css/something.css">
то же самое работает и для js, но становится странно, когда я пытаюсь включить изображения. Для включения изображения я пишу что-то вроде —
<img src ="{{ url('assets/images/someimage.jpg') }}"
и когда я просматриваю исходный код страницы, вывод выглядит так, как я ожидаю —
<img src="localhost/assets/images/someimage.jpg">
но моя консоль выдает 404 не найденных ошибки с указанием someimage.jpg не найден. И когда я перепроверяю, проверяя родительский элемент изображения, URL-адрес совершенно другой, что-то вроде этого —
<img src="localhost/images/someimage.jpg">
Смотрите, автоматически пропуская «активы» из URL-адреса изображения и в результате получается 404, но я вижу правильный URL-адрес при просмотре источника страницы.
Вещи, которые я пытался решить проблему —
-
Очистил кэш и перезагрузил страницу.
-
Пробовал использовать asset() вместо url(), но прототип этого был удален из lumen.
-
Извлеките папку [css / js / images] из ресурсов и вставьте их в родительский, то есть общедоступный. Это сработало, но тогда возникает вопрос, почему предыдущая настройка работала как для css, так и для js и вызывала проблемы только с изображениями?
Мои другие вопросы —
1. Как URL-адрес в источнике страницы может отличаться от отображаемого? Просто упомяну, что в моем случае URL-адрес в источнике страницы работал и отображал изображение, но поскольку отображаемый URL-адрес пропускал «активы» из path, следовательно, приводил к 404.
2. Есть ли какой-либо другой хороший способ включить эти ресурсы в представления. Если да, то, пожалуйста, также укажите, куда их поместить?
Прикрепляю некоторые изображения / код для справки.
Вывод отображаемой страницы, показывающий 404 ошибки для изображений, но ни одной для css.
Вывод окон источника страницы просмотра, показывающих ресурс, включенный в путь к изображению
Ответ №1:
Понятия не имею, правильно ли это, но я считаю, что вам действительно нужно поместить поток изображений внутри этого URL. Теперь сервер пытается получить некоторый объект в байтовом кодировании, которого там нет.
Я понятия не имею, тот ли это случай для вас, но у меня было много случаев, когда мне приходилось вставлять потоки изображений вместо URL-адресов, которые я решил таким образом, используя эту библиотеку:
Routes.php
/**
* Image handling routes.
* These make sure images actually are images instead of bytecode
*/
Route::get('organization/logo/{logo}', function($logo) {
$file = Image::make(Storage::disk('logo-image')->get($logo));
return $file->response();
});
Вид
<img src="{{ asset('organization/logo/' . $organization->logo_path) }}" alt="">
Возможно, я полностью отключен, но я понимаю, что происходит с вашим приложением, и это решило проблемы, когда я его реализовал.
Комментарии:
1. Привет !! Спасибо за ответ, я бы обязательно попытался ответить. Но пока не могли бы вы, пожалуйста, связать меня с любым ресурсом, где я могу найти больше информации о решении, которое вы дали?
2. Я нашел это довольно полезным: m.reddit.com/r/laravel/comments/3f9257 / … и в остальном документы с изображением вмешательства довольно ясны
Ответ №2:
Проверьте конфигурацию вашего веб-сервера. Похоже, у вас есть какая-то настройка перенаправления, которая перенаправляет assets/images/*
на just images/*
.
В качестве простого теста откройте вкладку «Сеть» и перейдите в браузер http://samplelumena.local/assets/images/footer1.jpg
. Я предполагаю, что трассировка сети покажет 30x (301, 302 http://samplelumena.local/images/footer1.jpg
и т.д.), За которым следует 404 для этого URL.