jonom/silverstripe-someconfig

将ModelAdmin的CRUD功能与SiteConfig的单例设置编辑功能结合起来,以便内容设置可以集中存放。

资助包维护!
jonom
www.paypal.me/jmnz

安装: 4,541

依赖项: 23

建议者: 0

安全: 0

星级: 6

关注者: 3

分支: 4

开放问题: 0

类型:silverstripe-vendormodule

1.0.3 2023-06-19 20:51 UTC

This package is auto-updated.

Last update: 2024-09-19 23:25:26 UTC


README

如果 🗂️ ModelAdmin 和 ⚙️ SiteConfig 有一个孩子,那会是什么?就是这个模块! 🐣

这是为什么

SiteConfig 适合存储网站全局设置。 ModelAdmin 适合查看数据。但是你知道吗?有时候你希望将相关数据和设置集中存放。

SomeConfigModelAdmin 的CRUD功能与 SiteConfig 的单例设置编辑功能相结合,以便内容和相关设置可以一起存放。

示例

假设你在网站每个页面上都有一个联系表单,并且有一个 ModelAdmin 实例让CMS用户浏览提交。这个联系表单会发送一封电子邮件给某人,所以你为它添加了一个 EnquiryMailTo 字段到 SiteConfig。现在用户需要去两个不同的地方来管理与你的询问表单相关的内容。如果所有这些都在 /admin/enquiries/ 下不更好吗?

要求

SilverStripe ^4 | ^5

安装

composer require jonom/silverstripe-someconfig

如何使用

  1. 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',
        ];
    }
  2. 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';
    }
  3. 如果你想在内置模板中访问配置设置,请确保你的配置类实现了 TemplateGlobalProvider。然后像使用 SiteConfig 一样使用它。
    <a href="mailto:{$EnquiryConfig.MailTo}?subject=Contact%20Form$20Broke">Email us</a>
  4. 你可以在PHP代码中像这样访问配置对象
    $email = EnquiryConfig::current_config()->MailTo

维护者联系方式

Jono Menz

赞助

如果你想提高维护者的士气,你欢迎通过 GitHub 或通过 PayPal 进行一次性捐赠。 ❤️ 感谢!

如果你想雇佣维护者开发新功能或讨论其他机会,也请随时联系。联系