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') }}
我对 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') }}