Lumen的url()函数表现奇怪

时间:2016-10-06 12:29:03

标签: php laravel laravel-5 lumen lumen-5.2

我最近刚刚安装了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">

请参阅,自动省略资产&#39;来自图片网址并导致404,但是当我查看网页来源时,我可以看到正确的网址。

我试图解决问题的事情 -

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

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

  3. 从资源中拉出[css / js / images]文件夹并将其粘贴在父级即公共中。 这有效,但问题是为什么以前的设置可以找到css和js并且仅导致图像出现问题?

  4. 我的其他问题是 -

    1。页面源中的URL如何与正在呈现的URL不同?就我的情况而言,页面源中的url工作并显示图像,但由于url被渲染而省略了资产&#39;因此,路径导致了404。

    2。是否有其他好方法可以在视图中包含这些资产。如果是,那么还请提到放在哪里?

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

    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

2 个答案:

答案 0 :(得分:1)

不知道这是否正确,但我相信你实际上需要在该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="">

我可能完全离开了,但我认识到你的应用程序正在发生什么,这在我实施它时会解决问题。

答案 1 :(得分:0)

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

作为一项简单的测试,请打开您的网络&#34;选项卡并将浏览器导航至http://samplelumena.local/assets/images/footer1.jpg。我猜测网络跟踪会向http://samplelumena.local/images/footer1.jpg显示30x(301,302等),然后是该网址的404。