Lumen 的 url() 函数表现异常

Lumen's url() function performing strangely

我最近重新安装了 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 not found。当我通过检查图像的父级进行交叉检查时,Url 是完全不同的东西,就像这样 -

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

看,自动从图像 url 中省略 'assets' 并导致 404,但是当我查看页面源代码时我可以看到正确的 url。

我尝试解决的问题 -

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

  2. 尝试使用 asset() 而不是 url() 但其原型已从 lumen 中删除。

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

我的其他问题是 -

1.页面源代码中的 url 与正在呈现的源代码有何不同?只是在我的例子中提到页面源中的 url 工作并显示图像但是由于 url 被渲染从路径中省略 'assets' 因此导致 404.

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

附上一些images/code供参考。

Output of rendered page showing 404 errors for images but none for css.

Output of view page source windows showing asset included in image path

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

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

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="">

我可能完全不在乎,但我知道你的应用程序发生了什么,这解决了我实施它时遇到的问题。

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

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

的 404