如何 link Laravel 中模块内部的资产?
How to link assets which are inside of module in Laravel?
我在使用模块时无法提供图像等资产,css,javascript。每个模块都有一组资产,例如 javascript、css、该特定模块资源文件夹内的图像,我刚刚编译到模块的 public 文件夹内。我无法向 link 提供该资产。
我这样提供link
<link href="{{ asset('modules/robust/core/public/admin/css/app.css') }}" rel="stylesheet">
显示的是这种结果
我想我应该为模块资产定义自定义路径,但我不知道该怎么做。请帮助我。
文件夹结构是这样的
根据我们在评论中的对话,我建议您按以下方式划分您的项目
app/Modules/
- 博客/
- 核心/
- 等.../
public/
- blog/css
- blog/js
- blog/images
- core/css
- core/js
- core/images
- 等.../css
- 等.../js
- 等.../图片
然后在控制器中使用这样的命令
$this->loadViewsFrom()
并且在视图中,您可以使用这个
{{ asset('blog/images/myimage.jpg') }}
如果还有其他问题,请在下方评论告诉我:)
很高兴我能帮上忙 :D
您可以在 route.php 文件中创建路由路径:
Route::get('/assets/{module}/{type}/{file}', [ function ($module, $type, $file) {
$module = ucfirst($module);
$path = app_path("Modules/$module/Resources/Blocks/$type/$file");
if (\File::exists($path)) {
return response()->download($path, "$file");
}
return response()->json([ ], 404);
}]);
{{ Module::asset('blog:js/script.js') }}
这假设您的脚本位于 /Modules/ModuleName/Assets/js/script.js。如果不在文件夹中,只需在资产调用中省略 js/ 部分即可。
使用这个命令:
php artisan module:publish
并像这样获取资产文件:
{{ Module::asset('blog:js/script.js') }}
我在使用模块时无法提供图像等资产,css,javascript。每个模块都有一组资产,例如 javascript、css、该特定模块资源文件夹内的图像,我刚刚编译到模块的 public 文件夹内。我无法向 link 提供该资产。
我这样提供link
<link href="{{ asset('modules/robust/core/public/admin/css/app.css') }}" rel="stylesheet">
显示的是这种结果
我想我应该为模块资产定义自定义路径,但我不知道该怎么做。请帮助我。
文件夹结构是这样的
根据我们在评论中的对话,我建议您按以下方式划分您的项目
app/Modules/
- 博客/
- 核心/
- 等.../
public/
- blog/css
- blog/js
- blog/images
- core/css
- core/js
- core/images
- 等.../css
- 等.../js
- 等.../图片
然后在控制器中使用这样的命令
$this->loadViewsFrom()
并且在视图中,您可以使用这个
{{ asset('blog/images/myimage.jpg') }}
如果还有其他问题,请在下方评论告诉我:)
很高兴我能帮上忙 :D
您可以在 route.php 文件中创建路由路径:
Route::get('/assets/{module}/{type}/{file}', [ function ($module, $type, $file) {
$module = ucfirst($module);
$path = app_path("Modules/$module/Resources/Blocks/$type/$file");
if (\File::exists($path)) {
return response()->download($path, "$file");
}
return response()->json([ ], 404);
}]);
{{ Module::asset('blog:js/script.js') }}
这假设您的脚本位于 /Modules/ModuleName/Assets/js/script.js。如果不在文件夹中,只需在资产调用中省略 js/ 部分即可。
使用这个命令:
php artisan module:publish
并像这样获取资产文件:
{{ Module::asset('blog:js/script.js') }}