Laravel 8 - 使用 Blade asset 来显示图片,但是从 resources 子文件夹加载

9 浏览
0 Comments

Laravel 8 - 使用 Blade asset 来显示图片,但是从 resources 子文件夹加载

我对Laravel还不太熟悉,所以请耐心等待。

我正在将我在node/react中开发的一个框架复制到laravel中的过程中。目前,我正在调整主要的架构,并且正在处理一个blade主页面。

目标1:

我想在模板页面中使用blade的{{ asset() }}助手来加载图片。问题是,我想要从一个位于resources文件夹内的子文件夹中加载图片:

/resources/app_files_layout

我知道我可以通过将文件夹移动到public目录来实现这一点,但这不是我想要的。我的意图也是在Laravel框架上进行深入学习和理解,并尝试在其他语言中保持架构的一致性。

目标2:

在通过{{ asset() }}助手在blade中成功加载/resources/app_files_layout中的图片后,我想在源代码中使用别名作为路由。例如:

与在浏览器中显示http://localhost/app_files_layout/image-name.jpg不同,我希望显示:http://localhost/images/image-name.jpg,并且不向用户显示文件位于app_files_layout文件夹中。

在Laravel中是否可能实现我想要的效果?

最糟糕的情况:

如果Laravel没有我想要的必要架构,我可以通过设置一个路由来显示/resources/app_files_layout文件夹中的图片。也就是说,当我在浏览器中访问http://localhost/images/image-name.jpg时,应该加载位于/resources/app_files_layout/image-name.jpg的图片。

我尝试按照这个stackoverflow建议进行操作:

https://stackoverflow.com/a/38736973/2510785

然而,返回了如下错误:

The requested resource /files-layout-test/backend-layout-header-tb02-03.jpg was not found on this server.

提前感谢!

0
0 Comments

在Laravel 8中使用blade asset显示图片,但从resources子文件夹加载的问题

问题出现的原因是在Laravel 8中使用blade asset来显示资源文件夹中的图片时,无法直接访问子文件夹中的图片。这是因为Laravel默认只能通过public文件夹来访问图片和其他静态资源,而无法直接访问resources文件夹。

为了解决这个问题,可以使用符号链接(symbolic link)的方法来创建一个公共访问路径,使得可以通过该路径来访问resources子文件夹中的图片。

解决方法如下:

1. 编辑Laravel的\config\filesystems.php文件,将原始的配置:

links' => [
    public_path('storage') => storage_path('app/public'),
],

修改为:

'links' => [
    public_path('storage') => storage_path('app/public'),
    public_path('files-layout') => resource_path('app_files_layout'),
], 

2. 在命令终端中执行以下命令:

php artisan storage:link

3. 最后,运行服务器并进行测试。不仅可以通过http://localhost:8000/files-layout/backend-layout-header-tb02-03.jpg在浏览器中访问文件,还可以继续使用Laravel的asset blade助手来引用图片。

在blade文件中可以这样使用:

{{ asset('/files-layout/backend-layout-header-tb02-03.jpg') }}

通过以上步骤,我们成功解决了在Laravel 8中使用blade asset显示资源子文件夹中的图片的问题。

0