php - SilverStripe ModelAdmin 单条记录

标签 php silverstripe

我最近学会了使用 ModelAdmin 类在后端创建自定义 CMS 部分,并使用 private static $managed_models = array('Contact'); 链接它们> 到名为 Contact 的 DataObject。

我的目标是创建一个名为“联系人”的新部分,其中包含一些联系方式(电话、电子邮件等)。这些是单个字段,而不是多个记录。

不幸的是,此设置(链接到数据对象)在后端创建了一种 GridField,它创建了多个“联系人”记录,其中包含电话、电子邮件等字段。

我如何创建自定义 CMS 部分来保存给定字段的单个实体?

最佳答案

这不是 ModelAdmins 的用途。它们旨在管理您的数据对象。
也就是说,我只能想到两个解决方案:

过滤网格并将其限制为一个数据记录。

你的数据对象

class Contact extends DataObject
{
    private static $db = [
        'Name' => 'Varchar',
        'Phone' => 'Varchar',
        'Email' => 'Varchar'
        // etc, etc
    ];
}

你的模型管理员

class ContactModelAdmin extends ModelAdmin
{
    private static $managed_models = array(
        'Contact'
    );

    private static $url_segment = 'contact';

    private static $menu_title = 'My Contact Admin';

    public function getList()
    {
        $list = parent::getList();

        $list = $list->filter('Name', 'EagleEye')->limit(1);

        return $list;
    }
}

或者您可能只想摆脱网格域并创建一些可以填充的表单域。

class ContactModelAdmin extends ModelAdmin
{
    private static $managed_models = array(
        'Contact'
    );

    private static $url_segment = 'contact';

    private static $menu_title = 'My Contact Admin';

    public function getEditForm($id = null, $fields = null) {

        $form = parent::getEditForm($id, $fields);

        $gridFieldName = $this->sanitiseClassName($this->modelClass);
        $form->Fields()->removeByName($gridFieldName);

        $form->Fields()->push(
            TextField::create('Name', 'Name', 'EagleEye')
                ->performReadonlyTransformation()
        );
        $form->Fields()->push(
            TextField::create('Phone', 'Phone', '0123456789')
                ->performReadonlyTransformation()
        );
        $form->Fields()->push(
            TextField::create('Email', 'Email', 'EagleEye@domain.com')
                ->performReadonlyTransformation()
        );

        return $form;
    }
}

我希望这就是您要找的。

关于php - SilverStripe ModelAdmin 单条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36866668/

相关文章:

php - sql查询中的多个条件

php - 使用exec命令触发php文件: how to see when process has stopped

javascript - Twitter Bootstrap 崩溃 : change display of toggle button

php - Silverstripe:在 Widget 安装时导入特定于 Widget 的 CSS

php - 是否可以检测 HTTPRequest 是否可用?

silverstripe - 如何在循环中获得倒数第二个项目

php - Javascript、AJAX 和 JSON 问题

javascript - UTF8 编码/€

php - Laravel - 使用 model::create() 时忽略不存在的字段

silverstripe - 如何在 Silverstripe 编辑器中添加自定义按钮?