Laravel 8 – 使用 blade 资源显示图像,但从资源子文件夹加载

Laravel 8 – use blade asset to display image, but loading from resources subfolder

我对 Laravel 很陌生,所以请耐心等待。

我正在复制我在 node 中开发的框架/对 laravel 做出反应。现在,我正在调整主要架构,目前正在制作 blade 母版页。

目标 1:

我想在模板页面中使用 blade {{ asset() }} 助手加载图像。问题是我想从位于资源文件夹内的子文件夹加载图像:

/resources/app_files_layout

我知道我可以通过将文件夹移动到 public 目录来完成此操作,但这不是我的想法。我的目的还在于进一步深入学习和理解 laravel 框架,并尝试在其他语言上与我的框架保持架构保真度。

目标 2:

在我设法通过 blade 中的 {{ asset() }} 助手从 /resources/app_files_layout 加载图像后,我想在源代码中为路由使用别名.例子: 我不想在浏览器的输出 HTML 中显示 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.

的图像

我尝试遵循这个 Whosebug 的建议: 但是,返回给我这样的错误:

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

提前致谢!

我设法做到了这一点。 @donkarnash on this question that I posted for the worst case scenario for creating a route alias for it: Laravel 8 – create route alias for image folder inside public directory

的全部功劳

我使用了符号 link 方法,几乎​​与 @sergey-ligus 在评论中提到的方法相似。

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 helper.

Blade 文件:

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