如何链接 Laravel 模块内部的资产?
Posted
技术标签:
【中文标题】如何链接 Laravel 模块内部的资产?【英文标题】:How to link assets which are inside of module in Laravel? 【发布时间】:2017-01-18 06:43:30 【问题描述】:我在使用模块时无法提供图片、css、javascript 等资产。每个模块在该特定模块的资源文件夹内都有每组资产,例如 javascript、css、图像,并且我刚刚编译到模块的公共文件夹内。我无法提供链接到该资产的问题。
我是这样提供链接的
<link href=" asset('modules/robust/core/public/admin/css/app.css') " rel="stylesheet">
它显示了这种结果
我认为我应该为模块资产定义自定义路径但我不知道该怎么做。请帮帮我。
文件夹结构是这样的。
【问题讨论】:
你能解释一下你的意思我在使用模块时无法提供图片、css、javascript等资产。你说的是什么模块? 我正在谈论使用 laravel 的自定义模块,例如博客、产品、页面模块等。每个模块都有自己的资产路径。 你可以尝试使用 url('modules/robust/core/public/admin/css/app.css')
方法一次吗?
@prateekkathal 文件夹结构是这样的,我包括在上面。
是的,我试过但没有工作,在控制台中没有发现异常。
【参考方案1】:
根据我们在 cmets 中的谈话,我建议你按以下方式划分你的项目
应用程序/模块/
博客/ 核心/ 等等.../公开/
博客/css 博客/js 博客/图片 核心/css 核心/js 核心/图像 等.../css 等.../js 等.../图像然后在Controller中使用这样的命令
$this->loadViewsFrom()
在 View 中,您可以使用它
asset('blog/images/myimage.jpg')
如果有更多问题,请在下面评论告诉我:)
很高兴我能帮上忙:D
【讨论】:
感谢您的帮助!好的,如果发生任何问题,我会告诉你的!【参考方案2】:您可以在 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);
]);
【讨论】:
好用。谢谢。【参考方案3】: Module::asset('blog:js/script.js')
这假设您的脚本位于 /Modules/ModuleName/Assets/js/script.js。如果不在文件夹中,只需省略资产调用中的 js/ 部分即可。
【讨论】:
YOur 答案是当有人使用 nWidart/laravel-modules 包时工作。它不适用于 caffeinated/modules 包。 哦,是的,只有 nWidart/laravel-modules 包。 因为我正在使用 caffeinated/modules 包并卡在这里所以我想找到解决方案。【参考方案4】:使用这个命令:
php artisan module:publish
并像这样获取资产文件:
Module::asset('blog:js/script.js')
【讨论】:
您是否设置了“博客”而不是您的模块名称?这对我有用。 Module::asset('blog:js/script.js')以上是关于如何链接 Laravel 模块内部的资产?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Windows 命令提示符在 Laravel 中运行 PHPUnit