lekoala/silverstripe-form-extras

Silverstripe的表单扩展

安装: 371

依赖项: 1

建议者: 0

安全性: 0

星标: 23

关注者: 9

分支: 3

开放问题: 1

语言:JavaScript

类型:silverstripe模块

1.2.14 2022-03-31 11:18 UTC

This package is auto-updated.

Last update: 2024-09-04 14:59:38 UTC


README

使用Silverstripe获取更好的表单工具

处理jQuery、鼠标滚轮和手势

我们尽量优先使用jQuery.mousewheel和hammer作为库来处理鼠标滚轮和手势。目的是尽量避免包含其他会重复执行相同任务的库,从而导致代码重复和额外的加载时间。

您可以使用以下助手在您的项目中加载这些库

FormExtraJquery::include_jquery();
FormExtraJquery::include_jquery_ui();
FormExtraJquery::include_hammer();
FormExtraJquery::include_mousewheel();

基本表单类

新功能

FormExtra类附带一些简单但实用的功能。

  • 如果验证失败,它将保存并恢复数据
  • 它提供了一些快捷响应(例如 return $this->err('Failed!') )

还有两个新动作

  • FormActionArrow:带有箭头的表单动作(简单 :-) )
  • FormActionConfirm:带有确认文本的表单动作(真的,只是 onclick="confirm...")

多步骤表单

FormExtraMulti类实现了多步骤功能。

每个步骤都由一个单独的"Form"对象表示。类必须按顺序命名(例如MyFormStep1、MyFormStep2 ...),因为类名用于确定当前步骤、下一步等...

通过调用以下内容定义动作

$actions = $this->definePrevNextActions()

这将创建两个动作:doPrev和doNext。doPrev在第一步上不会设置,而doNext在最后一步上将被翻译为不同的内容。

默认情况下,点击这些按钮将简单地保存数据到会话并导航到表单。您可以根据需要覆盖这些方法以实现所需的功能。

还提供了一个模板,用于在表单顶部添加步骤。该模板使用表单的AllSteps方法,该方法返回所有步骤及其属性。

注意:不要忘记,如果返回表单(doPrev),将发生验证。这可能不是期望的行为。如果与ZenValidator一起使用,将使用FormActionNoValidation确保在返回时不会发生验证(同时仍然保存当前状态,允许用户自由导航而不丢失数据)。

新字段

MiniColorsField

一个使用"minicolors" jQuery插件来选择颜色的字段。最好使用DBColor字段而不是常规的Varchar(7)来存储颜色。您可以使用MiniColorsField::setTheme方法设置主题

BaseUploadField

一个带有工厂方法的UploadField,可以根据上下文获取已设置文件夹名称的upload field。默认情况下,如果启用了此模块,上下文将考虑当前子站点。否则,趋势是将所有内容放入"Uploads"文件夹,这会在一段时间后变得难以管理。

ImageUploadField

一个已设置用于图像上传的UploadField

示例用法

$fields->replaceField('Logo', ImageUploadField::createForClass($this, 'Logo'));

FrontendUploadField

一个准备好在前端使用的UploadField。要允许在前端进行编辑,请确保您有一个返回true的canEditFrontend方法(根据您的安全设置而定)。

这还添加了"Gallery"功能。支持"cropbox"、"focuspoint"作为图像调整大小模块。

BetterCheckboxField

默认的checkbox字段在Silverstripe中如果没有选中则不会发送任何值。这个会!

BirthDateField

如果您像我一样,并且您的客户要求您将出生日期字段分成三...

已选字段

与Chosen集成的下拉字段 http://harvesthq.github.io/chosen/

CmsInlineFormAction

正如您可能已经注意到的,InlineFormAction类并不完全适用。这个替代方案很简单,但能完成任务。

组合字段

用户可以添加值的下拉列表。

掩码输入字段

使用Inputmask的输入字段 https://github.com/RobinHerbots/jquery.inputmask

邮政编码字段

根据国家验证邮政编码的字段。

正则表达式文本字段

根据特定正则表达式验证的字段

Select2字段

使用Select2的字段。支持3版和4版。 https://select2.github.io/

性感密码字段

根据Member::password_validator()验证密码的字段

滑块字段

使用jQuery ui滑块的滑块字段

表格字段

支持多列和无限行的字段。数据以json格式存储。

简单TinyMce字段

用于前端使用的简单TinyMceField插件

裁剪框字段

使用裁剪框字段的字段

网格字段

网格字段配置_记录默认

使用GridFieldSortableRows、GridFieldOrderableRows和GridFieldBulkManager的默认配置

网格字段配置_关系默认

使用GridFieldSortableRows、GridFieldOrderableRows和GridFieldBulkManager的默认配置

网格字段下载按钮

进行中

网格字段导出全部按钮

默认的导出到csv按钮仅导出当前列表,而不是所有项目。虽然这在某种程度上是好的,但有时您的客户需要完整导出。简单使用此按钮即可实现。

注意:为了使csv文件在Excel中打开得更好,简单使用

$btn->setCsvSeparator(';');

HasOne辅助器

有时,您想要添加一个按钮来编辑HasOne关系,甚至将所有字段直接嵌入到标签页中。

HasOne按钮字段

像其他字段一样简单添加按钮

new HasOneButtonField($name,$title,$this);

嵌入所有字段

感谢HasOneEditDataObjectExtension,所有以Relation:Name或Relation/Name命名的字段将加载和保存从Relation到数据。

new TextField('MyRelation:MyField','My field name')

推荐模块

与以下模块配合使用效果最佳

兼容性

与3.1版进行了测试

维护者

LeKoala - thomas@lekoala.be