这是我使用Laravel的第一个项目(我从5.2开始).我正在建立一个自我管理的网站.有一个管理员应该保存网站设置,以便以后在网站上使用.例如:背景颜色,社交网络,带图片的旋转木马,产品等.
我的第一次尝试是使用:id |创建模型“Setting”键(唯一)|值.当我试图保存社交网络(显示在网站标题中)时,我意识到我必须用URL,标题等保存“值”json …关系模型的丑陋实现,所以我来到结论是不好的.我创建了一个sepparated模型SocialNetwork:id |网址|图片|名称.
现在我正在考虑在我的BaseController中一次加载所有这些模型,所以我可以通过所有控制器,但我不确定它是否正确.我的意思是,一个数组$设置与所有模型作为其一部分:
abstract class BaseController extends Controller
{
protected $settings;
...
public function __construct(...)
{
$this->settings = [
'backgroundColor' => 'red',
'socialNetworks' => SocialNetwork::all(),
'other' => Other::all(),
...
]
}
}
这对我来说看起来很可怕,但是我迷失了这个框架,我不知道我能做些什么才能解决这个问题.
有人告诉我有关服务提供商的信息,但我正在试图弄清楚它的优势以及能够利用这些模型(保存数据)的最佳方法,而我却得不到它.
我不是要求明确的代码(但这会很好),我会在理解了这个方法之后进行调查,但是我会非常感激一些提示或概念上的帮助.
谢谢!
最佳答案 这是一个很好的问题.最近我为我的Code Canyon产品(
Krisma CMS Script)做了一个,我的方法如下.
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)为每个部分创建一个表,即about,intro等,并插入我想要修改的值.
3)现在,在管理面板中,创建一个表单以进行更改/修改,并更新所需的部分属性.
4)获取视图中的数据.假设用户已将背景颜色从管理面板更改为RED,请在视图样式中打印出该变量:{{$sectionname-> color}}
5)我希望它能让你更好地了解如何实现设置,我为我的产品做了这个,可能有更好的方法,但到目前为止,这是我在研究中发现的,对我来说非常适合.