【问题标题】:Laravel 5 - static image assets broken when passing parameter in URLLaravel 5 - 在 URL 中传递参数时静态图像资产损坏
【发布时间】:2017-04-07 01:58:39
【问题描述】:

当我传递 URL 参数(Laravel 5.4)时,我看到页面上的静态图像未加载(通常是损坏的占位符图像),但没有 URL 参数并使用完全相同的视图,它们加载正常。所以http://localhost/site/public/filmpage 显示图像但http://localhost/site/filmpage/batman 不显示图像(所有其他资产加载正常)。想知道这是为什么,以及如何解决?

我的 web.php 路由文件包含:

Route::get('filmpage', 'FilmController@filmpagetest');
Route::get('filmpage/{name}', 'FilmController@filmpage');

然后是控制器文件:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class FilmController extends Controller
{
    public function filmpage($name)
        {
        return view('filmpage',array('name' => $name));
        }

    public function filmpagetest()
        {
        return view('filmpage',array('name' => 'hello'));
        }
}

我在我的 Win 7 64 位机器、PHP 5.6.24、Bitnami WAMP Stack 7.1.2 上运行 Laravel。

感谢您的任何建议。

【问题讨论】:

  • 你能告诉我们你的看法吗?这将有助于解决问题。
  • view 只是刀片模板 (layout.blade.php) 中的一个非常简单的纯 HTML 文件,中间带有 @yield('content'),然后是一个单独的刀片模板页面内容。但是,对于工作页面和非工作页面,它使用相同的布局页面。
  • 奇怪的是,当我在 Chrome 浏览器中查看呈现的页面源时,对于工作页面和非工作页面,两者中损坏图像的 HTML 链接都是:src="images/logo-small。 png" 但是,当我将鼠标悬停在链接上时,显示的实际完整图像路径(在 Chrome 中查看源窗口的底部)对于工作页面是 /localhost/site/public/images/logo-small.png,但对于不工作的一个(带参数)是:/localhost/site/public/filmpage/images/logo-small.png - 由于“filmpage”位而导致路径错误...
  • 而不是 array('name' =&gt; $name) 尝试 return view('filmpage')-&gt;with('name',$name); 并通过 $name 显示它。希望它会奏效!

标签: php laravel laravel-5


【解决方案1】:

使用您提供的信息,我认为您的资产是这样链接的:

/path/to/asset/file.ext

但是您正在使用这样的路径加载图像:

path/to/image.ext

注意缺少/ 和开头。 这就是为什么您的图像可能无法加载的原因。

【讨论】:

  • 我尝试在路由文件 Route::get('/filmpage', 'FilmController@filmpagetest'); Route::get('/filmpage/{name}', 'FilmController@filmpage');但它没有任何区别......
  • 请看上面对Adarsh的回复
  • 这是我解决问题的方法... src="{{ URL::to('/') }}/path/to/image.svg"
猜你喜欢
  • 1970-01-01
  • 2019-07-21
  • 1970-01-01
  • 1970-01-01
  • 2020-12-05
  • 2014-12-18
  • 1970-01-01
  • 2017-06-23
  • 1970-01-01
相关资源
最近更新 更多