这是我使用 Laravel 的第一个项目(我从 5.2 开始)。我正在建立一个自我管理的网站。有一个管理员应该保存网站设置以供以后在网站中使用。例如:背景颜色、社交网络、图片轮播、产品等。
我的第一次尝试是创建一个模型“设置”:id | key (unique) | value
。当我尝试保存社交网络(以显示在网站标题中)时,我意识到我必须在“value”中保存一个包含 URL、标题等的 json...关系模型的实现很丑陋,所以我来到了结论是很糟糕。我创建了一个单独的模型社交网络:id | URL | image | name
.
现在我正在考虑在我的 BaseController 中一次加载所有这些模型,这样我就可以通过所有控制器来获取它,但我不确定它是否正确。我的意思是,一个数组$settings
所有模型都作为其中的一部分:
abstract class BaseController extends Controller
{
protected $settings;
...
public function __construct(...)
{
$this->settings = [
'backgroundColor' => 'red',
'socialNetworks' => SocialNetwork::all(),
'other' => Other::all(),
...
]
}
}
这对我来说看起来很可怕,但我对这个框架迷失了,我不知道我能做的最好的事情是什么来处理这个问题。
有人告诉我有关服务提供商的信息,但我试图找出它的优势以及能够利用这些模型(保存数据)的最佳方法,但我不明白。
我并不要求明确的代码(但是这会很好),我会在理解该方法后对其进行调查,但一些提示或概念性帮助将非常感激。
谢谢你!
这是一个很好的问题。最近我为我的 Code Canyon 产品之一做了(Krisma CMS 脚本 https://codecanyon.net/item/krisma-cms-script/17523033)我的方法如下。
1) 创建服务提供者
public function boot()
{
$this->header();
$this->intro();
$this->about();
$this->resume();
$this->portfolio();
$this->services();
$this->stats();
$this->contact();
$this->footer();
$this->section();
$this->codesetting();
$this->customizer();
}
在引导中调用的每个函数都在引导函数下面的 Provider 类中声明。
例如,对于标题部分,我通过标题模型从数据库获取数据并在全球范围内共享,可以在应用程序中的任何位置访问这些数据。
$section = Section ::find(1);
view()->share('section ', $section);
2)为每个部分创建一个表,即关于、介绍等,并插入我想要修改的值。
3)现在在管理面板中创建一个用于更改/修改的表单并更新所需的部分属性。
4) 获取视图中的数据。假设用户已将管理面板的背景颜色更改为红色,因此在您的视图中打印出该变量style : {{ $sectionname->color }}
5)就是这样,我希望它能让您更好地了解如何实施设置,我为我的产品做到了这一点,可能有更好的方法,但到目前为止,这是我在研究中发现的并且对我来说非常完美。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)