从Laravel 5中的公用文件夹外部提供CSS和JS


Serve CSS and JS from outside of public folder in Laravel 5

我理解这种方式打破了Laravel的结构点,但我的疯狂是有方法的。我计划使用laravel的一次安装来托管几个数据库驱动的网站。目前,所有的网站都共享相同的布局,我有一个系统可以在数据库中存储一些自定义CSS,为每个网站提供不同的配色方案。我想改变这一点,这样他们就可以使用完全不同的观点。因此,站点A加载views/theme1/app.blade.php,站点B加载views/theme2/app.blady.php。

我通过使用以下内容返回一个视图来实现这一点。

$theme = getDomainThemeName();
return view($theme.'/home');

这也是可行的,但我现在的任务是动态加载资产。我正在使用bootstrap生成主题,并对HTML进行一些调整,以创建app.blade.php文件。我有两个潜在的解决方案,但我更喜欢从视图目录中服务器css文件的方法。这意味着以下映射。

http://website.com/css/style.css=>/resources/views/theme1/css/style.css

能做这样的事吗?另一种选择是使用php读取css文件,并使用yield将其插入到应用程序中。它有效,但这意味着我不能使用浏览器缓存来缓存资产。我还想我可以在公共文件夹中创建子目录。public/theme1/css/style.css。这是最合乎逻辑的,但这意味着我必须对主题系统进行分段。我希望能够在视图目录中解压缩一个主题,这样就可以了。

我正在使用Laravel 5,我也有root访问服务器的权限。在centos7。

我认为最好的方法是使用下一个结构:

/public/css/style.css
/public/css/theme1/custom1.css
/resources/views/common.blade.php
/resources/views/theme1/main.blade.php

然后用php有条件地加载每个站点主题。缓存可能没有任何问题。