Heim > Fragen und Antworten > Hauptteil
Ich bin ziemlich neu bei Laravel, also habt bitte Geduld mit mir.
Ich kopiere ein Framework, das ich in Node/React entwickelt habe, in Laravel. Derzeit optimiere ich die Hauptarchitektur und arbeite derzeit an der Blade-Masterseite.
Ziel 1:
Ich möchte den Blade {{ asset() }}-Helfer verwenden, um Bilder in die Vorlagenseite zu laden. Das Problem ist, dass ich Bilder aus einem Unterordner laden möchte, der sich im Ressourcenordner befindet:
/resources/app_files_layout
Ich weiß, dass ich das erreichen kann, indem ich den Ordner in ein öffentliches Verzeichnis verschiebe, aber das ist nicht das, was ich möchte. Außerdem möchte ich mein Lernen und Verständnis des Laravel-Frameworks vertiefen und versuchen, die architektonische Treue zu meinem Framework in anderen Sprachen aufrechtzuerhalten.
Ziel 2:
Nachdem es mir gelungen war, das Bild über den {{ asset() }}-Helfer in Blade aus /resources/app_files_layout zu laden, wollte ich einen Alias des Pfads im Quellcode verwenden. Beispiel: Ich möchte, dass im Ausgabe-HTML im Browser Folgendes angezeigt wird: http://localhost/images/image-name.jpg anstelle von http://localhost/app_files_layout/image-name.jpg und dem Benutzer diese Dateien niemals angezeigt werden befinden sich im Ordner app_files_layout.
Ist das, was ich tun möchte, in Laravel möglich?
Worst-Case-Szenario:
Wenn Laravel nicht über die nötige Architektur verfügt, um das zu tun, was ich möchte, kann ich eine Route einrichten, die das Bild im Ordner /resources/app_files_layout anzeigt. Das heißt: Wenn ich http://localhost/images/image-name.jpg in meinem Browser besuche, sollte das Bild in /resources/app_files_layout/image-name.jpg geladen werden.
Ich habe versucht, diesem Stackoverflow-Vorschlag zu folgen: https://stackoverflow.com/a/38736973/2510785 Es wird mir jedoch eine Fehlermeldung wie diese zurückgegeben:
The requested resource /files-layout-test/backend-layout-header-tb02-03.jpg was not found on this server.
Vielen Dank im Voraus!
P粉9285913832023-11-10 09:47:01
我成功地做到了这一点。所有功劳都归功于 @donkarnash 关于这个问题,我发布了为其创建路由别名的最坏情况:Laravel 8 – 为公共目录中的图像文件夹创建路由别名
我使用了符号链接方法,几乎类似于@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 assetblade helper。
刀片文件:
{{ asset('/files-layout/backend-layout-header-tb02-03.jpg') }}