gorriecoe / silverstripe-linkfield
为 gorriecoe/silverstripe-link 添加 Linkfield
1.1.2
2023-08-10 05:10 UTC
Requires
- gorriecoe/silverstripe-link: ^1.0
- silvershop/silverstripe-hasonefield: ^3.0 || ^4.0
- symbiote/silverstripe-gridfieldextensions: ^3.1 || ^4.0
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
维护者
屏幕截图
使用
<?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