gorriecoe/silverstripe-linkfield

为 gorriecoe/silverstripe-link 添加 Linkfield

资助包维护!
Ko Fi

安装次数: 180,093

依赖项: 35

建议者: 1

安全: 0

星标: 9

关注者: 5

分支: 25

开放问题: 16

类型:silverstripe-vendormodule

1.1.2 2023-08-10 05:10 UTC

This package is auto-updated.

Last update: 2024-09-17 00:46:55 UTC


README

gorriecoe/silverstripe-link 添加 Linkfield

为什么从 gorriecoe/linkfield 重定向到这里?

此存储库的原维护者已去世。无需进行任何更改,您的模块将继续按预期工作。有关更多信息,请参阅 此问题

安装

Composer 是推荐安装 SilverStripe 模块的方式。

composer require gorriecoe/silverstripe-linkfield

需求

  • gorriecoe/silverstripe-link ^1.0
  • silvershop/silverstripe-hasonefield 3.0.1. 查看问题 #11
  • symbiote/silverstripe-gridfieldextensions 3.1

维护者

屏幕截图

Link list Detail edit form

使用

<?php

use gorriecoe\Link\Models\Link;
use gorriecoe\LinkField\LinkField;

class MyClass extends DataObject
{
    private static $has_one = [
        'Button' => Link::class
    ];

    private static $many_many = [
        'Buttons' => Link::class
    ];

    private static $many_many_extraFields = [
        'Buttons' => [
            'Sort' => 'Int' // Required for all many_many relationships
        ]
    ];

    /**
     * CMS Fields
     * @return FieldList
     */
    public function getCMSFields()
    {
        $fields = parent::getCMSFields();
        $fields->addFieldsToTab(
            'Root.Main',
            [
                LinkField::create(
                    'Button',
                    'Button',
                    $this
                ),
                LinkField::create(
                    'Buttons',
                    'Buttons',
                    $this
                )
            ]
        );
        return $fields;
    }
}

配置

默认情况下,所有在 Link 模型中允许的链接类型都会在编辑表单中显示,但可以根据字段进行配置,允许进行多个配置而无需创建多个相同的 Link 模型子类。

标题字段也可以隐藏,如果您打算使用链接的 URL 而不是用户配置的标题,这将很有用。

此配置可以通过构造函数传递,或稍后使用 LinkField::setLinkConfig() 方法设置。

仅声明允许的链接类型。

// Allow only SiteTree and URL types, implicitly allow displaying title field.
$linkConfig = [
    'types' => [
        'SiteTree',
        'URL',
    ],
];
LinkField::create('FieldName', 'Field Title', $this, $linkConfig);

明确声明是否允许每种类型的链接。

// Allow only SiteTree and URL types.
$linkConfig = [
    'types' => [
        'SiteTree' => TRUE,
        'URL' => TRUE,
        'Email' => FALSE,
        'Phone' => FALSE,
        'File' => FALSE,
    ],
];
LinkField::create('FieldName', 'Field Title', $this, $linkConfig);

隐藏标题字段

$linkConfig = [
    'title_display' => false,
];
LinkField::create('FieldName', 'Field Title', $this, $linkConfig);

稍后设置配置

$linkField = LinkField::create('FieldName', 'Field Title', $this);
$linkConfig = [
    'types' => [
        'SiteTree',
        'URL',
    ],
];
$linkField->setLinkConfig($linkConfig);

排序列

默认情况下,LinkField 假设排序列名为 Sort。如果您想使用其他字段名,例如 SortOrder,可以使用 setSortColumn 方法指定,如下所示:

LinkField::create(
    'Buttons',
    'Buttons',
    $this
)->setSortColumn('SortOrder')

您还可以全局定义排序列。在您的 config.yml 中添加以下内容:

gorriecoe\LinkField\LinkField:
  sort_column: 'SortOrder'

多对多关系

我们还可以将多对多关系添加到 Link 类。在您的 config.yml 中添加以下内容:

gorriecoe\Link\Models\Link:
  belongs_many_many:
    MyCustomObject : MyCustomObject.Buttons