goldfinch/fielder

Fielder 是 Silverstripe 的字段管理器和组织器

安装: 473

依赖项: 17

建议者: 0

安全性: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:silverstripe-vendormodule

v2.0.23 2024-08-19 00:22 UTC

README

Silverstripe Version Package Version Total Downloads License

Fielder 🚜 是一个字段组织器,它可以帮助简化字段声明,并使所有管理在一个地方变得容易,同时保持代码简洁。

安装

composer require goldfinch/fielder

使用方法

DataObject 的 CMS 字段中使用 Fielder

use SilverStripe\ORM\DataObject;

MyAwesomeModel extends DataObject
{
    public function getCMSFields()
    {
        $fields = parent::getSettingsFields()->initFielder($this);
        
        $fielder = $fields->getFielder();

        $fielder->remove('Content');

        $fielder->required([
            'FirstName',
            'About',
        ]);

        $fielder->fields([
            'Root.Main' => [
                $fielder->string('FirstName', 'First name'),
                $fielder->text('About'),
                $fielder->html('Content'),
            ],
            'Root.Demo' => [
                $fielder->string('Headline'),
            ],
        ]);

        return $fields;
    }
}

SiteTree 的设置字段中使用 Fielder

use SilverStripe\CMS\Model\SiteTree;

MyAwesomePage extends SiteTree
{
    public function getSettingsFields()
    {
        $fields = parent::getSettingsFields()->initFielder($this);

        $fielder = $fields->getFielder();
        
        $fielder->remove('ShowInMenus');

        return $fields;
    }
}

Fielder 有自己的验证方法来简化验证过程(见验证方法)。但是,默认的 SS 验证方法仍然可以呈现,并会与之一起调用。

use SilverStripe\ORM\DataObject;

MyAwesomeModel extends DataObject
{
    public function getCMSFields()
    {
        $fields = parent::getSettingsFields()->initFielder($this);
        
        $fielder = $fields->getFielder();
        
        // fielder validation
        $fielder->validate([
            'Email' => 'required|email'
        ]);

        return $fields;
    }

    // default SS validation
    public function validate()
    {
        $result = parent::validate();

        if ($this->Title != 'Home') {
            $result->addError('Title is invalid');
        }

        return $result;
    }
}

扩展中的 Fielder

use SilverStripe\ORM\DataExtension;

class MyExtension extends DataExtension
{
    public function updateCMSFields($fields)
    {
        $fields->initFielder($this->owner);

        $fielder = $fields->getFielder();

        $fielder->validate([
            'Email' => 'required|email',
        ]);
    }

    public function updateSettingsFields($fields)
    {
        $fields->initFielder($this->owner);

        $fielder = $fields->getFielder();

        $fielder->remove('ShowInMenus');
    }
}

可用方法列表

在标签页中声明字段

$fielder->fields([
  'Root.Main' => [
    $fielder->string('Title'),
  ],
])

删除先前声明的字段来声明字段

$fielder->freshFields([
  'Root.Main' => [
    $fielder->string('Title'),
  ],
])

插入到之后

$fielder->insertAfter('MenuTitle', $fielder->string('Title'));

$fielder->insertAfter('MenuTitle', [
    $fielder->string('Title'),
    $fielder->text('Content'),
]);

插入到之前

$fielder->insertBefore('MenuTitle', $fielder->string('Title'));

$fielder->insertBefore('MenuTitle', [
    $fielder->string('Title'),
    $fielder->text('Content'),
]);

重新排序字段

$fielder->reorder(['Content', 'MenuTitle']);

重新排序标签页

$fielder->reorderTabs([
    'Root.Demo',
    'Root.Main'
]);

将字段添加到标签页

$fielder->toTab('Root.Demo', [
    $fielder->string('Title'),
    $fielder->text('Content'),
]);

获取数据字段,与 dataFieldByName 相同

$fielder->dataField('Title');

获取字段,与 scaffoldFormField 相同

$fielder->field('Title');

必填字段

$fielder->required('Title')
$fielder->required(['Title', 'Content']);

//through validate method (recommended)

$fielder->validate([
    'Title' => 'required',
]);

删除特定字段

$fielder->remove('Title');

删除所有字段

$fielder->removeAll();

删除类中的所有字段(忽略通过继承或扩展类添加的字段)

$fielder->removeAllCurrent();

删除标签页中的字段

$fielder->removeFieldsInTab('Root.Main');
// same as
$fielder->clearTab('Root.Main');

添加描述字段

$fielder->description('Title', 'Some field description flies here');
// ..
$fielder->description([
    'Title' => 'Some field description flies here',
    'URLSegment' => '<strong style="color: red">Red field description</strong>'
]);

禁用字段

$fielder->disable('Title');
$fielder->disable('Title', false); // undisabled
// ..
$fielder->disable(['Title', 'Text']);
$fielder->disable(['Title', 'Text'], false); // undisabled all

只读字段

$fielder->readonly('Title');
$fielder->readonly('Title', false); // take off readonly
// ..
$fielder->readonly(['Title', 'Text']);
$fielder->readonly(['Title', 'Text'], false); // take off readonly

添加自定义错误

$fielder->addError('Error message'); // error | required | bad | validation
$fielder->addError('Error message', 'info');
$fielder->addError('Error message', 'warning');
$fielder->addError('Error message', 'message');
$fielder->addError('<strong>Error</strong> message', 'good', null, 'html');

验证字段

每个字段的简单闭包验证

$fielder->validate([
    'Title' => function($value, $fail) {
        $max = 100;
        if (strlen($value) > $max) {
            $fail('The :attribute must not be over ' . $max . ' characters.');
        }
    }
]);

Laravel 方法(推荐)

此包附带可立即使用的 Laravel 验证组件。有关可用规则及其使用方法的更多信息,请参阅此列表

use Goldfinch\Illuminate\Rule;

$fielder->validate([
    'Title' => 'required|regex:/^[\d\s\+\-]+$/',
    'Email' => 'required|email',
    'Fruits' => ['required', Rule::in(['apple', 'orange', 'kiwi'])],
]);

您还可以创建自定义规则来处理特定的验证逻辑。使用 Taz🌪️ 创建新规则。

例如

php taz make:rule PhoneRule

并在您的验证规则中简单实现它

use App\Rules\PhoneRule;

$fielder->validate([
    'Phone' => ['required', new PhoneRule()],
]);

显示逻辑方法

基本覆盖,并非所有功能都可用。

$fielder->displayIf();
$fielder->displayUnless();
$fielder->hideIf();
$fielder->hideUnless();

示例

$fielder->toTab('Root.Demo', [
    $fielder->checkbox('ConditionalField'),
    $fielder->displayIf('ConditionalField', [ // isChecked
    // $fielder->displayIf('!Magic', [ // isNotChecked
    // $fielder->displayIf(['MagicString', '==', null], [ // isEmpty
    // $fielder->displayIf(['MagicString', '!=', null], [ // isNotEmpty
    // $fielder->displayIf(['MagicString', '==', 3], [ // isEqualTo
    // $fielder->displayIf(['MagicString', '==', [2,3]], [ // isEqualTo
    // $fielder->displayIf(['MagicString', '!=', 3], [ // isNotEqualTo
    // $fielder->displayIf(['MagicString', '!=', [2,3]], [ // isNotEqualTo
    // $fielder->displayIf(['MagicString', '>', 3], [ // isGreaterThan
    // $fielder->displayIf(['MagicString', '<', 3], [ // isLessThan
        $fielder->string('Field1'),
        $fielder->string('Field2'),
        $fielder->string('Field3'),
    ])
]);

可用字段列表

✳️ 通用字段

复选框

复选框字段

类: SilverStripe\Forms\CheckboxField

适合的数据库类型: Boolean

$fielder->checkbox($name, $title = null, $value = null)

// left aligned checkbox (wrapped in composite field)
$fielder->lineCheckbox($name, $title = null, $value = null)

下拉列表

下拉字段

类: SilverStripe\Forms\DropdownField

适合的数据库类型: *

$fielder->dropdown($name, $title = null, $source = [], $value = null)

只读

只读字段

类: SilverStripe\Forms\ReadonlyField

适合的数据库类型: *

$fielder->readonlyField($name, $title = null, $value = null)

文本

文本区域字段

类: SilverStripe\Forms\TextareaField

适合的数据库类型: *

$fielder->text($name, $title = null, $value = null)

字符串

文本字段

类: SilverStripe\Forms\TextField

适合的数据库类型: Varchar

$fielder->string($name, $title = null, $value = '', $maxLength = null, $form = null)

密码

密码字段

类: SilverStripe\Forms\PasswordField

适合的数据库类型: Varchar

$fielder->password($name, $title = null, $value = '')

操作

操作字段

类: SilverStripe\Forms\FormAction

$fielder->action($action, $title = '', $form = null)

密码确认

密码确认字段

类: SilverStripe\Forms\ConfirmedPasswordField

适合的数据库类型: *

$fielder->passwordConfirmed($name, $title = null, $value = '', $form = null, $showOnClick = false, $titleConfirmField = null)

货币

货币字段

类: SilverStripe\Forms\CurrencyField

适合的数据库类型: Currency

$fielder->currency($name, $title = null, $value = '', $maxLength = null, $form = null)

日期

日期字段

类: SilverStripe\Forms\DateField

适合的数据库类型: Date

$fielder->date($name, $title = null, $value = '', $maxLength = null, $form = null)

日期时间

日期时间字段

类: SilverStripe\Forms\DatetimeField

适合的数据库类型: Datetime

$fielder->datetime($name, $title = null, $value = '', $maxLength = null, $form = null)

电子邮件

电子邮件字段

类: SilverStripe\Forms\EmailField

适合的数据库类型: Varchar

$fielder->email($name, $title = null, $value = '', $maxLength = null, $form = null)

分组下拉列表

分组下拉字段

类: SilverStripe\Forms\GroupedDropdownField

适合的数据库类型: *

$fielder-> groupedDropdown($name, $title = null, $source = [], $value = null)
// ..
$fielder->groupedDropdown('Name', 'Title', [
    'numbers' => [1 => 1, 2 => 2],
    'letters' => [1 => 'A', 2 => 'B'],
])
// $source = FooBar::get()->map()

HTML

HTML 编辑器字段

类: SilverStripe\Forms\HTMLEditor\HTMLEditorField

适合的数据库类型: HTMLText

$fielder->html($name, $title = null, $value = '', $config = null)

金钱

金钱字段

类: SilverStripe\Forms\MoneyField

适合的数据库类型: Money

$fielder->money($name, $title = null, $value = '')

数字

数字字段

类: SilverStripe\Forms\NumericField

适合的数据库类型: Decimal Float Int

$fielder->numeric($name, $title = null, $value = '', $maxLength = null, $form = null)

单选按钮

单选按钮字段

类: SilverStripe\Forms\OptionsetField

适合的数据库类型: *

$fielder->radio($name, $title = null, $source = [], $value = null)
// ..
$fielder->radio('Name', 'Title', [1 => 'Option 1', 2 => 'Option 2'])
// $source = FooBar::get()->map()

选择组

选择组字段

类: SilverStripe\Forms\SelectionGroup

适合的数据库类型: *

$fielder->selectionGroup($name, $items, $value = null)
// ..
$fielder->selectionGroup('Name', [
    $fielder->selectionGroupItem(
        'one',
        $fielder->literal('one', 'one view'),
        'one title'
    ),
    $fielder->selectionGroupItem(
        'two',
        $fielder->literal('two', 'two view'),
        'two title'
    ),
])

时间

时间字段

类: SilverStripe\Forms\TimeField

适合的数据库类型: Time

$fielder->time($name, $title = null, $value = '', $maxLength = null, $form = null)

✳️ 结构字段

组合

组合字段

类: SilverStripe\Forms\CompositeField

$fielder->composite($children = null)
// ..
$fielder->composite([
    $fielder->string('Title'),
    $fielder->html('Text'),
])

分组

分组字段

类: SilverStripe\Forms\FieldGroup

$fielder->group($titleOrField = null, ...$otherFields)
// ..
$fielder->group(
    'Group name',
    $fielder->string('Title'),
    $fielder->html('Text'),
)

列表

列表字段。注意:$fields 已是 FieldList。使用此字段我们将在 FieldList 中存储新的 FieldList

类: SilverStripe\Forms\FieldList

$fielder->list($items = [])
// ..
...$fielder->list([
    $fielder->string('Title'),
    $fielder->html('Text'),
])

标签页

标签页字段

类: SilverStripe\Forms\Tab

$fielder->tab($name, $titleOrField = null, $fields = null)
// ..
$fielder->tab('Primary tab', $fielder->header('Header'), $fielder->literal('Literal', '<b>Br</b>eaking <b>Ba</b>d'))

标签集合

标签集合字段

类: SilverStripe\Forms\TabSet

$fielder->tabSet($name, $titleOrTab = null, $tabs = null)
// ..
$fielder->tabSet('MyTabSetName',
    $fielder->tab('Primary tab', $fielder->header('Header'), $fielder->literal('Literal', '<b>Br</b>eaking <b>Ba</b>d')),
    $fielder->tab('Secondary tab', $fielder->header('Header'), $fielder->literal('Literal', '<b>Banshee</b>')),
)

切换组合

切换组合字段

类: SilverStripe\Forms\ToggleCompositeField

$fielder->toggleComposite($name, $title, $children)
// ..
$fielder->toggleComposite('MyToggle', 'Toggle', [
    $fielder->string('Title'),
    $fielder->text('Text')
])

✳️ 文件字段

上传

上传字段

类: SilverStripe\AssetAdmin\Forms\UploadField

适合的关系: has_one has_many many_many belongs_many_many

$fielder->upload($name, $title = null, SS_List $items = null)

文件

文件字段

类: SilverStripe\Forms\FileField

适合的关系: has_one has_many many_many belongs_many_many

$fielder->file($name, $title = null, $value = null)

✳️ 关系字段

复选框集合

复选框集合字段

类: SilverStripe\Forms\CheckboxSetField

适合的关系: has_many many_many belongs_many_many

$fielder->checkboxSet($name, $title = null, $source = [], $value = null)
// ..
$fielder->checkboxSet('List', 'List', [1 => 'Set 1', 2 => 'Set 2']),
// $source = FooBar::get()->map()

下拉树

下拉树字段 (!SiteTree)

类: SilverStripe\Forms\TreeDropdownField

适合的关系: has_one

$fielder->dropdownTree($name, $title = null, $sourceObject = null, $keyField = 'ID', $labelField = 'TreeTitle', $showSearch = true)
// ..
$fielder->dropdownTree('Page')

树多选

树多选字段,仅适用于 SilverStripe\Security\Group

类: SilverStripe\Forms\TreeMultiselectField

适合的关系: has_many many_many

$fielder->treeMultiSelect($name, $title = null, $sourceObject = Group::class, $keyField = "ID", $labelField = "Title")

网格

网格字段

类: SilverStripe\Forms\GridField\GridField Goldfinch\Fielder\Grid

适合的关系: has_many many_many belongs_many_many

$fielder->grid($name, $title = null, SS_List $dataList = null, GridFieldConfig $config = null)
// ..
$fielder->grid('Services', 'Services')->build()
// ..
$fielder->grid('Services', 'Services', $this->Services())->build()
// ..
$fielder->grid('Cards', 'Cards')
    ->config('default')
    ->components([
        'add',
        'edit',
    ])
    ->remove([
        'add',
        'edit',
        'copy',
        'delete',
    ])->build()
  • 可能需要额外的包

列表框

列表框字段

类: SilverStripe\Forms\ListboxField

适合的关系: has_many many_many belongs_many_many

$fielder->listbox($name, $title = null, $source = [], $value = null, $size = null)

✳️ 工具字段

标题

标题字段

类: use SilverStripe\Forms\HeaderField;

$fielder->header($name, $title = null, $headingLevel = 2)

隐藏

隐藏字段

类: SilverStripe\Forms\HiddenField

适合的数据库类型: *

$fielder->hidden($name, $title = null, $value = null)

标签

标签字段

类: SilverStripe\Forms\LabelField

$fielder->label($name, $title = null)

文本

文本字段

类: SilverStripe\Forms\LiteralField

$fielder->literal($name, $content)

可空

可空字段

类: SilverStripe\Forms\NullableField

适合的数据库类型: *

$fielder->nullable(FormField $valueField, $isNullLabel = null)
// ..
$fielder->nullable($fielder->string('Text'))

小数

小数(数据库)字段

类: SilverStripe\ORM\FieldType\DBDecimal

适合的数据库类型: Decimal

$fielder->decimal($name, $title = null, $wholeSize = 9, $decimalSize = 2, $defaultValue = 0)

双精度

双精度(数据库)字段

类: SilverStripe\ORM\FieldType\DBDouble

适合的数据库类型: Double

$fielder->double($name, $title = null, $defaultVal = 0)

浮点数

浮点数(数据库)字段

类: SilverStripe\ORM\FieldType\DBFloat

适合的数据库类型: Float

$fielder->float($name, $title = null, $defaultVal = 0)

年(数据库)字段

类: SilverStripe\ORM\FieldType\DBYear

适合的数据库类型: Year

$fielder->year($name, $title = null, $options = [])

百分比

百分比(数据库)字段

类: SilverStripe\ORM\FieldType\DBPercentage

适合的数据库类型: Percentage | Percentage(6)

$fielder->percentage($name, $title = null, $precision = 4)

整数

整数(数据库)字段

类: SilverStripe\ORM\FieldType\DBInt

适合的数据库类型: Int

$fielder->int($name, $title = null, $defaultVal = 0)

大整数

大整数(数据库)字段

类: SilverStripe\ORM\FieldType\DBBigInt

适合的数据库类型: BigInt

$fielder->bigInt($name, $title = null, $defaultVal = 0)

地区

地区(数据库)字段

类: SilverStripe\ORM\FieldType\DBLocale

适合的数据库类型: Locale

$fielder->locale($name, $title = null, $size = 16)

枚举

枚举(数据库)字段

类: SilverStripe\ORM\FieldType\DBEnum

适合的数据库类型: Enum("Apple,Orange,Kiwi", "Kiwi")

$fielder->enum($name)

siteTreeURLSegment

SiteTreeURLSegment 字段

类: SilverStripe\CMS\Forms\SiteTreeURLSegmentField

适合的数据库类型: *

$fielder->siteTreeURLSegment($name, $title = null, $value = '', $maxLength = null, $form = null)

htmlReadonly

HTMLReadonly 字段

类: SilverStripe\Forms\HTMLReadonlyField

适合的数据库类型: *

$fielder->htmlReadonly($name, $title = null, $value = null)

✳️ 外部字段

shortcode

composer require goldfinch/shortcode

Shortcode 字段(字符串)

合适的数据库类型: SCVarchar

$fielder->shortcode($name, $title = null)

objectLink

composer require silvershop/silverstripe-hasonefield dev-main

HasOneButton 字段

类: SilverShop\HasOneField\HasOneButtonField

合适的关联关系: has_one belongs_to

$fielder->objectLink($relationName, $fieldName = null, $title = null, GridFieldConfig $customConfig = null, $useAutocompleter = true)

object

composer require gorriecoe/silverstripe-linkfield ^1.1

HasOneLink 字段

类: gorriecoe\LinkField\Forms\HasOneLinkField

合适的关联关系: has_one belongs_to

$fielder->object($relationName, $title = null, $linkConfig = [], $useAutocompleter = false)

multiSelect

composer require kinglozzer/multiselectfield ^2.0

MultiSelect 字段

类: Kinglozzer\MultiSelectField\Forms\MultiSelectField

合适的关联关系: many_many belongs_many_many

$fielder->multiSelect($name, $title = null, $sort = false, $source = null, $titleField = 'Title')
// ..
$fielder->multiSelect('Services'),
$fielder->multiSelect('Services', 'Services', 'SortExtra'),

media

composer require goldfinch/image-editor

可编辑上传字段

类: Goldfinch\ImageEditor\Forms\EditableUploadField

适合的关系: has_one has_many many_many belongs_many_many

...$fielder->media($name, $title = null)

mediaSortable

composer require goldfinch/image-editor

可编辑排序上传字段

类: Goldfinch\ImageEditor\Forms\EditableSortableUploadField

适合的关系: has_many many_many belongs_many_many

...$fielder->mediaSortable($name, $title = null)

color

composer require heyday/silverstripe-colorpalette ^2.1

调色板字段

类: Heyday\ColorPalette\Fields\ColorPaletteField

适合的数据库类型: *

$fielder->color($name, $title = null, $source = [], $value = null)
// ..
$fielder->color('Color', 'Color', ['yellow' => '#fee12f', 'pink' => '#eb83ad', 'green' => '#70cd77'])

colorPicker

composer require ryanpotter/silverstripe-color-field ^1.0

颜色字段

类: RyanPotter\SilverStripeColorField\Forms\ColorField

适合的数据库类型: *

$fielder->colorPicker($name, $title = null, $value = '', $form = null)

其他要求

# yml config (example)
RyanPotter\SilverStripeColorField\Forms\ColorField:
  colors:
    - '#1976D2'
    - '#2196F3'

colorGroup

composer require heyday/silverstripe-colorpalette ^2.1

分组调色板字段

类: Heyday\ColorPalette\Fields\GroupedColorPaletteField

适合的数据库类型: *

$fielder->colorGroup($name, $title = null, $source = [], $value = null)
// ..
$fielder->colorGroup('Color', 'Color', ['Primary' => ['yellow' => '#fee12f', 'pink' => '#eb83ad'], 'Secondary' => ['green' => '#70cd77']])

json

composer require goldfinch/json-editor

JSON编辑器字段

类: Goldfinch\JSONEditor\Forms\JSONEditorField

合适的数据库类型: JSONText Goldfinch\JSONEditor\ORM\FieldType\DBJSONText::class

$fielder->json($name, $title = null, $options = [], $value = '{}', $form = null, $schema = '{}')

其他要求

  1. 创建模式文件: app/_schema/Page-Parameters.json (app/_schema/{parent-classname}-{field-name}.json)

  2. 示例模式文件

{
  "type": "array",
  "options": {},
  "items": {
    "type": "object",
    "properties": {
      "example": {
        "title": "Example",
        "type": "string",
        "default": "default example text"
      }
    }
  }
}
  1. 示例字段
$fielder->json('Parameters')

video

composer require goldfinch/video-field

视频字段

类: Goldfinch\VideoField\Forms\VideoField

合适的数据库类型: Video

$fielder->video($name, $title = null, $value = '', $static = false)

参见: github.com/goldfinch/video-field

place

composer require goldfinch/google-fields

位置字段

类: Goldfinch\GoogleFields\Forms\PlaceField

合适的数据库类型: Place

$fielder->place($name, $title = null, $value = '')

其他要求

.env

APP_GOOGLE_MAPS_KEY=''

参见: github.com/goldfinch/google-fields

map

composer require goldfinch/google-fields

地图字段

类: Goldfinch\GoogleFields\Forms\MapField

合适的数据库类型: Map

$fielder->map($name, $title = null, $value = '')

其他要求

.env

APP_GOOGLE_MAPS_KEY=''

参见: github.com/goldfinch/google-fields

link

composer require maxime-rainville/anyfield ^0.0.0

复选框字段

类: SilverStripe\AnyField\Form\AnyField

合适的关联关系: has_one 关系类型: SilverStripe\LinkField\Models\Link::class

模板: vendor/silverstripe/linkfield/templates/SilverStripe/LinkField/Models/Link.ss

$fielder->link($name, $title = null, $value = null)

links

composer require maxime-rainville/anyfield ^0.0.0

ManyAny 字段

类: SilverStripe\AnyField\Form\ManyAnyField

合适的关联关系: has_many many_many belongs_many_many 关系类型: SilverStripe\LinkField\Models\Link::class

$fielder->links($name, $title = null, SS_List $dataList = null)

其他要求

在 SilverStripe\LinkField\Models\Link 上需要 $has_one

例如

private static $has_one = [
    'Page' => \Page::class,
];

linkSS

composer require silverstripe/linkfield ^3

链接字段

类: SilverStripe\LinkField\Form\LinkField

合适的关联关系: has_many many_many belongs_many_many 关系类型: SilverStripe\LinkField\Models\Link::class

$fielder->linkSS($name, $title = null, $value = null)

linkRel(额外链接字段)

composer require gorriecoe/silverstripe-linkfield ^1.1

链接字段

类: gorriecoe\LinkField\LinkField

合适的关联关系: has_one 关系类型: gorriecoe\Link\Models\Link::class

$fielder->linkRel($name, $title = null, $linkConfig = [])
// ..
$fielder->linkRel('ALink', 'Link')

code

composer require kevingroeger/codeeditorfield ^1.2

代码编辑器字段

类: KevinGroeger\CodeEditorField\Forms\CodeEditorField

适合的数据库类型: *

$fielder->code($name, $title = null, $value = null, $mode = 'ace/mode/html', $theme = 'ace/theme/github')

tag

composer require silverstripe/tagfield ^3.0

标签字段

类: SilverStripe\TagField\TagField

适合的关系: has_many many_many belongs_many_many

$fielder->tag($name, $title = null, $source = [], $value = null, $titleField = 'Title')

points

composer require goldfinch/silverstripe-image-points

点字段

类: LittleGiant\SilverStripeImagePoints\DataObjects\Point

适合的关系: has_many many_many belongs_many_many

$fielder->points($name, $title = null, $source = [], $gridconfig = null)

其他要求

  1. model
use LittleGiant\SilverStripeImagePoints\DataObjects\Point;
use SilverStripe\Assets\Image;

private static $has_one = [
    'Image' => Image::class,
];

private static $has_many = [
    'ImagePoints' => Point::class . '.PointOf',
];

private static $owns = [
    'Image',
];
  1. yml 配置
LittleGiant\SilverStripeImagePoints\DataObjects\Point:
  image_width: 1918
  image_height: 822
  1. 示例字段
$fielder->points('ImagePoints')

wrapper

composer require unclecheese/display-logic

包装器字段

类: UncleCheese\DisplayLogic\Forms\Wrapper

$fielder->wrapper($children)

autocomplete

composer require tractorcow/silverstripe-autocomplete ^5.0

自动完成字段

类: TractorCow\AutoComplete\AutoCompleteField

适合的数据库类型: *

$fielder->autocomplete($name, $title = null, $value = '', $sourceClass = null, $sourceFields = null)
// ..
$fielder->autocomplete('Page', 'Page', '', Page::class, 'Title')

stringTag

composer require silverstripe/tagfield ^3.0

StringTag 字段

类: SilverStripe\TagField\StringTagField

适合的数据库类型: *

$fielder->stringTag($name, $title = null, $source = [], $value = null)
// ..
$fielder->stringTag('Varchar', 'Varchar', MyDataObject::get())

imageCoords

composer require goldfinch/image-editor

ImageCoords 字段

类: Goldfinch\ImageEditor\Forms\ImageCoordsField

适合的关系: has_one

$fielder->imageCoords($name, $title, $onlyCanvas = false, $cssGrid = false, $image = null, $XFieldName = null, $YFieldName = null, $xySumFieldName = null, $width = null, $height = null)
// ..
$fielder->imageCoords('Image', 'Focus Point', true)
$fielder->imageCoords('Image', 'Focus Point')

encrypt

composer require lekoala/silverstripe-encrypt dev-master

加密字段

类: LeKoala\Encrypt\EncryptHelper

合适的数据库类型

'MyText' => LeKoala\Encrypt\EncryptedDBText::class,
'MyHTMLText' => LeKoala\Encrypt\EncryptedDBHTMLText::class,
'MyVarchar' => LeKoala\Encrypt\EncryptedDBVarchar::class,
'MyNumber' => LeKoala\Encrypt\EncryptedNumberField::class,
'MyIndexedVarchar' => LeKoala\Encrypt\EncryptedDBField::class,
$fielder->encrypt($name)

country

composer require dynamic/silverstripe-country-dropdown-field ^2.0

国家下拉字段

类: Dynamic\CountryDropdownField\Fields\CountryDropdownField

适合的数据库类型: *

$fielder->country($name, $title = null, $source = [], $value = '', $form = null)

icon

composer require goldfinch/icon-field

图标字段

类: Goldfinch\IconField\Forms\IconField

合适的数据库类型: Icon Goldfinch\IconField\ORM\FieldType\DBIcon::class

$fielder->icon($set, $name, $title = null, $value = '')

其他要求

设置 .yml 配置 github.com/goldfinch/icon-field

phone

composer require innoweb/silverstripe-international-phone-number-field dev-master

电话(数据库)字段

类: Innoweb\InternationalPhoneNumberField\ORM\DBPhone

合适的数据库类型: Phone

$fielder->phone($name, $title = null, $options = [])

模板输出

$Phone.International
$Phone.National
$Phone.E164
$Phone.RFC3966
$Phone.URL
<% if Phone %>
<% with Phone %>
<a href="$URL" title="$International">$National</a>
<% end_with %>
<% end_if %>

mediaSelect

composer require goldfinch/silverstripe-imageselection-field

电话(数据库)字段

类: NSWDPC\Forms\ImageSelectionField\ImageSelectionField

合适的关联关系

'Image' => Image::class,
'Images' => Image::class,
$fielder->mediaSelect($name, $relationList, $title = null)
// ..
$fielder->mediaSelect('Image', 'Images')

模板输出

$Phone.International
$Phone.National
$Phone.E164
$Phone.RFC3966
$Phone.URL

许可证

MIT许可证(MIT)