2

我最近重新安装了 Lumen 框架,并开始用它构建一个站点。是的,我知道 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 not found 错误,说明找不到 someimage.jpg。当我通过检查图像的父级进行交叉检查时,Url 完全不同,就像这样 -

<img src="localhost/images/someimage.jpg">

看,自动从图像 url 中省略“资产”并导致 404,但是当我查看页面源时我可以看到正确的 url。

我试图解决这个问题的事情 -

  1. 清除缓存并重新加载页面。

  2. 尝试使用asset()而不是url(),但它的原型已从流明中删除。

  3. 从资产中拉出 [css/js/images] 文件夹并将它们粘贴到父级即公共中。这行得通,但问题是为什么以前的设置对 css 和 js 都有效,并且只对图像造成了问题?

我的其他问题是——

1. 页面源中的 url 与正在呈现的 url 有何不同?仅提及在我的情况下,页面源中的 url 工作并显示图像,但由于 url 被渲染,因此从路径中省略了“资产”,因此导致 404。

2.有没有其他好的方法可以将这些资产包含在视图中。如果是,那么还请提及将它们放在哪里?

附上一些图像/代码以供参考。

渲染页面的输出显示图像的 404 错误,但 css 没有。

显示包含在图像路径中的资产的视图页面源窗口的输出

4

2 回答 2

1

不知道这是否正确,但我相信您实际上需要在该 URL 中放置一个图像流。现在服务器正在尝试检索一些不存在的字节编码对象。

我不知道你的情况是否相同,但我有很多情况下我不得不放入图像流而不是 URL,我使用这个库以这种方式解决了这个问题:

路由.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="">

我可能完全离开了,但我知道你的应用程序发生了什么,这在我实现它时解决了问题。

于 2016-10-06T12:47:06.320 回答
0

检查您的 Web 服务器配置。听起来您有某种类型的重定向设置,可以重定向assets/images/*images/*.

作为一个简单的测试,打开您的“网络”选项卡并将您的浏览器导航到http://samplelumena.local/assets/images/footer1.jpg. 我猜网络跟踪将显示 30x (301、302 等)到http://samplelumena.local/images/footer1.jpg,然后是该 url 的 404。

于 2016-10-19T04:12:47.230 回答