jonom / silverstripe-someconfig
将ModelAdmin的CRUD功能与SiteConfig的单例设置编辑功能结合起来,以便内容设置可以集中存放。
1.0.3
2023-06-19 20:51 UTC
Requires
- silverstripe/framework: ^4 | ^5
This package is auto-updated.
Last update: 2024-09-19 23:25:26 UTC
README
如果 🗂️ ModelAdmin
和 ⚙️ SiteConfig
有一个孩子,那会是什么?就是这个模块! 🐣
这是为什么
SiteConfig
适合存储网站全局设置。 ModelAdmin
适合查看数据。但是你知道吗?有时候你希望将相关数据和设置集中存放。
SomeConfig
将 ModelAdmin
的CRUD功能与 SiteConfig
的单例设置编辑功能相结合,以便内容和相关设置可以一起存放。
示例
假设你在网站每个页面上都有一个联系表单,并且有一个 ModelAdmin
实例让CMS用户浏览提交。这个联系表单会发送一封电子邮件给某人,所以你为它添加了一个 EnquiryMailTo
字段到 SiteConfig
。现在用户需要去两个不同的地方来管理与你的询问表单相关的内容。如果所有这些都在 /admin/enquiries/
下不更好吗?
要求
SilverStripe ^4 | ^5
安装
composer require jonom/silverstripe-someconfig
如何使用
- 将
SomeConfig
特性应用到包含你的设置字段的DataObject
类。- 和
SiteConfig
一样,每个网站只允许存在一个这样的对象。
use JonoM\SomeConfig\SomeConfig; use SilverStripe\ORM\DataObject; use SilverStripe\View\TemplateGlobalProvider; class EnquiryConfig extends DataObject implements TemplateGlobalProvider { use SomeConfig; private static $db = [ 'MailTo' => 'Varchar(255)', 'ThankYouMessage' => 'Text', ]; }
- 和
- 将
SomeConfigAdmin
特性应用到包含你的配置类的ModelAdmin
子类。- 限制: 你的配置类不能是第一个。 目前这个模块相当简单。它只是改变了标签页和回链,这样你就看不到设置对象的网格字段。但是,如果你的设置类是第一个标签页,那么在访问管理时将加载网格字段视图,这个技巧就不起作用了。
use JonoM\SomeConfig\SomeConfigAdmin; use SilverStripe\Admin\ModelAdmin; class EnquiryAdmin extends ModelAdmin { use SomeConfigAdmin; private static $managed_models = [ 'EnquirySubmission', 'EnquiryTopic', // Cannot be first 'EnquiryConfig', ]; private static $url_segment = 'enquiries'; private static $menu_title = 'Enquiries'; private static $menu_icon_class = 'font-icon-p-mail'; }
- 如果你想在内置模板中访问配置设置,请确保你的配置类实现了
TemplateGlobalProvider
。然后像使用SiteConfig
一样使用它。<a href="mailto:{$EnquiryConfig.MailTo}?subject=Contact%20Form$20Broke">Email us</a>
- 你可以在PHP代码中像这样访问配置对象
$email = EnquiryConfig::current_config()->MailTo
维护者联系方式
赞助
如果你想提高维护者的士气,你欢迎通过 GitHub 或通过 PayPal 进行一次性捐赠。 ❤️ 感谢!
如果你想雇佣维护者开发新功能或讨论其他机会,也请随时联系。联系