【问题标题】:Lumen's url() function performing strangelyLumen 的 url() 函数执行异常
【发布时间】:2017-02-15 04:49:26
【问题描述】:

我最近重新安装了 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 中省略“assets”并导致 404,但是当我查看页面源时,我可以看到正确的 url。

我尝试解决的问题 -

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

  2. 尝试使用asset() 代替url(),但其原型已从lumen 中删除。

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

我的其他问题是 -

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

【问题讨论】:

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


    【解决方案1】:

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

    我不知道你的情况是否相同,但在很多情况下,我不得不放入图像流而不是 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="">
    

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

    【讨论】:

    • 嘿!感谢您的回复,我一定会尝试回复。但是现在您能否将我链接到任何资源,我可以在其中找到有关您提供的解决方案的更多信息?
    • 我发现这非常有用:m.reddit.com/r/laravel/comments/3f9257/… 否则干预图像文档非常清晰
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-06-29
      • 1970-01-01
      • 2020-07-30
      • 1970-01-01
      • 1970-01-01
      • 2013-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多