silverstripe / tagfield
SilverStripe 的标签字段
Requires
- php: ^8.1
- silverstripe/framework: ^5
- silverstripe/versioned: ^2
Requires (Dev)
- 4.x-dev
- 3.x-dev
- 3.3.x-dev
- 3.3.0-beta1
- 3.2.x-dev
- 3.2.2
- 3.2.1
- 3.2.0
- 3.2.0-rc1
- 3.2.0-beta1
- 3.1.x-dev
- 3.1.2
- 3.1.1
- 3.1.0
- 3.1.0-rc1
- 3.1.0-beta1
- 3.0.x-dev
- 3.0.3
- 3.0.2
- 3.0.1
- 3.0.0
- 3.0.0-rc1
- 3.0.0-beta1
- 2.x-dev
- 2.11.x-dev
- 2.11.3
- 2.11.2
- 2.11.1
- 2.11.0
- 2.11.0-rc1
- 2.11.0-beta1
- 2.10.x-dev
- 2.10.2
- 2.10.1
- 2.10.0
- 2.9.x-dev
- 2.9.0
- 2.9.0-rc1
- 2.9.0-beta1
- 2.8.x-dev
- 2.8.0
- 2.8.0-rc1
- 2.8.0-beta1
- 2.7.x-dev
- 2.7.1
- 2.7.0
- 2.7.0-rc1
- 2.7.0-beta1
- 2.7.0-alpha1
- 2.6.x-dev
- 2.6.1
- 2.6.0
- 2.6.0-rc1
- 2.6.0-beta1
- 2.5.x-dev
- 2.5.0
- 2.4.x-dev
- 2.4.3
- 2.4.2
- 2.4.1
- 2.4.0
- 2.3.x-dev
- 2.3.0
- 2.2.x-dev
- 2.2.3
- 2.2.2
- 2.2.1
- 2.2.0
- 2.2.0-beta1
- 2.2.0-alpha1
- 2.1.x-dev
- 2.1.1
- 2.1.0
- 2.0.x-dev
- 2.0.1
- 2.0.0
- 2.0.0-alpha1
- 1.4.x-dev
- 1.4.0-rc1
- 1.3.x-dev
- 1.3.3
- 1.3.2
- 1.3.1
- 1.3.0
- 1.2.x-dev
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.x-dev
- 1.1.1
- 1.1.0
- 1.0.x-dev
- 1.0.1
- 1.0.0
- 0.5.0
- dev-master
This package is auto-updated.
Last update: 2024-09-18 03:33:04 UTC
README
为 SilverStripe 定制的标签输入字段。
安装
composer require silverstripe/tagfield
概述
允许将标签存储为关系或逗号分隔的字符串。支持懒加载的自动完成。
注意:该字段针对 Silverstripe CMS UI 的使用进行了优化。表单字段类本身可以在 CMS 外部使用,但您需要构建自己的前端来解析原始字段数据(data-schema
属性)。
使用
关系标签
use SilverStripe\ORM\DataObject; class BlogPost extends DataObject { private static $many_many = [ 'BlogTags' => BlogTag::class ]; }
use SilverStripe\ORM\DataObject; class BlogTag extends DataObject { private static $db = [ 'Title' => 'Varchar(200)', ]; private static $belongs_many_many = [ 'BlogPosts' => BlogPost::class ]; }
$field = TagField::create( 'BlogTags', 'Blog Tags', BlogTag::get(), $this->BlogTags() ) ->setShouldLazyLoad(true) // tags should be lazy loaded ->setCanCreate(true); // new tag DataObjects can be created
注意:这假设您已导入命名空间类,例如:使用 SilverStripe\TagField\TagField;
一对一关系
您还可以使用 TagField 选择 has_one
关系的值。假设 BlogPost
有一个 BlogCategory
。
class BlogCategory extends DataObject { private static $db = [ 'Title' => 'Varchar(200)', ]; }
use SilverStripe\ORM\DataObject; class BlogPost extends DataObject { private static $has_one = [ 'BlogCategory' => BlogCategory::class ]; }
$field = TagField::create( 'BlogCategoryID', $this->fieldLabel('BlogCategory'), BlogCategory::get() ) ->setIsMultiple(false) ->setCanCreate(true);
注意:我们使用 ID
后缀作为字段名称(例如:BlogCategoryID
而不是 BlogCategory
),并通过设置 ->setIsMultiple(false)
只允许一个值。
字符串标签
use SilverStripe\ORM\DataObject; class BlogPost extends DataObject { private static $db = [ 'Tags' => 'Text', ]; }
$field = StringTagField::create( 'Tags', 'Tags', ['one', 'two'], explode(',', $this->Tags ?: '') ); $field->setShouldLazyLoad(true); // tags should be lazy loaded
更多详细信息请参阅 docs/en。
与 silverstripe-taxonomy 一起使用 TagField
TagField 假设对象上有 Title
字段。对于没有 Title
字段的类,使用 setTitleField
进行相应修改。
$field = TagField::create( 'Tags', 'Blog Tags', TaxonomyTerm::get(), ) ->setTitleField('Name');
版本控制
此库遵循 Semver。根据 Semver,您将能够升级到该库的任何次要或补丁版本,而不会对公共 API 产生任何破坏性更改。Semver 还要求我们明确定义此库的公共 API。
所有具有 public
可见性的方法都是公共 API 的一部分。所有其他方法都不是公共 API 的一部分。在可能的情况下,我们将尝试在次要/补丁版本中保持 protected
方法的向后兼容性,但如果您正在重写方法,请在升级之前测试您的作品。
报告问题
请为您发现的任何错误或缺失的功能 创建一个问题。