lekoala / silverstripe-form-extras
Silverstripe的表单扩展
Requires
- silverstripe/framework: ~3.1
Suggests
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')
推荐模块
与以下模块配合使用效果最佳
- Zenvalidator : https://github.com/sheadawson/silverstripe-zenvalidator.git
- 显示逻辑 : https://github.com/unclecheese/silverstripe-display-logic
兼容性
与3.1版进行了测试
维护者
LeKoala - thomas@lekoala.be