Laravel资产URL

35

我已经安装了Laravel并开始尝试编写应用程序。我在与/app目录相同的目录中创建了一些用于我的资源的目录。但是当我尝试访问本地主机中的图像时,例如:http://localhost/assets/images/image.png

我还尝试过使用http://localhost/app/assets/images/image.png

当我尝试在视图中设置背景图像时遇到了问题,它一直返回404错误。

这是我的应用程序在app/下的样子:

->app
->assets
->commands
->config
->controllers
->database
->lang
->models
->start
->storage
->tests
->views
app.txt
routes.php
filters.php

但是我收到了有关请求的错误。我已经仔细检查过URL是正确的。

Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException

6
您的资产(以及任何其他需要直接通过浏览器访问的内容)应该放在public/目录中,因为这是文档根目录。app/文件夹不应该对浏览器可见。 - judereid
4个回答

76

您需要将所有资产放在app/public文件夹中,为了从视图中访问它们,您可以使用asset()辅助方法。

例如,您可以在视图中使用以下方式检索assets/images/image.png

<img src="{{asset('assets/images/image.png')}}">


语法{{asset()}}在我的情况下根本不起作用。我正在使用background: url('{{asset('assets/images/image.png')}}')这根本不起作用,哈哈。Php语法错误。不确定为什么我总是看到那个语法,因为它在每个上下文中都返回错误。 - vikingcode
2
这不是 url('{{asset('assets/images/image.png')}}) !!,花括号 {{ 'some string'}} 在 Blade 模板引擎中表示 <?php echo 'some string' ?>,您不必调用 url 函数,asset 函数将返回有效的图像 URL,请尝试在我的上述帖子中粘贴完整代码,不要添加任何内容。 - Walid Ammar
请将所有资产放置在 app/public/assets 文件夹中。 - Walid Ammar
@MohammadWalid 这是一个旧评论,我知道,但我想指出 @vikingcode 是在提到 CSS 函数 url()。也就是说,他正在将其回显到 style="{{}}" 属性中。 - User
谢谢您的回答,但如果我需要在innerHTML中使用呢? <img src="{{asset('assets/images/image.png')}}"> - Muddasir23

6

你需要完成两个步骤:

  1. 将所有文件(css,js,html代码等)放入public文件夹中。
  2. 使用url({{ URL::asset('images/slides/2.jpg') }})来引用你的内容,其中images/slides/2.jpg是你内容的路径。

同样地,你可以调用js、css等。


4
除了将所有资产放在“public”文件夹中,您还可以使用“HTML :: image()”方法,只需要一个参数,即相对于公共文件夹的图像路径。
{{ HTML::image('imgs/picture.jpg') }}

生成以下HTML代码:

<img src="http://localhost:8000/imgs/picture.jpg">

HTML::image()方法链接到其他元素:http://laravel-recipes.com/recipes/185/generating-an-html-image-element


0

你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接