如何链接 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

Laravel 路由问题:自动重定向到根文件夹

在 Laravel 5 中链接 Css 和 Js 文件 Summernote 资产的正确方法

我如何在 laravel 中使用节点模块?

Laravel 5找不到css文件

Laravel分页链接设计问题[关闭]