modul-is / form
简化版的Nette表单
v1.2.1
2024-09-27 09:56 UTC
Requires
- php: ^8.2
- kravcik/latte-font-awesome-icon: ^1
- nette/application: ^3.0 || ^4.0
- nette/forms: ^3.2.3
- nette/utils: ^4.0
Requires (Dev)
README
此库允许您花更少的时间编写Nette表单的模板 - 它包含表单、容器以及所有输入的渲染器
入门指南
创建表单最简单的方法是创建一个继承自 FormComponent
类的组件
class MyForm extends \ModulIS\Form\FormComponent
{
public function createComponentForm(): Form
{
$form = $this->getForm();
...
return $form;
}
}
然后您只需将输入添加到表单中,创建 MyForm
组件,一切就绪!
输入
表单支持所有默认的Nette输入并添加了新的输入
addLink()
- 带链接的按钮(例如,重置、返回按钮)addWhisperer()
- 带有筛选选项的选项框addMultiWhisperer()
- 与whisperer相同,可以选择更多选项addDuplicator()
- 可以多次复制的容器addDependentSelect()
- 可以根据另一个输入的更改通过ajax更改选项的选项框addDependentMultiSelect()
- 与DependantSelect相同,但可以选择更多选项addDate()
- 日期输入,可以限制最小和最大日期
自定义设置
表单
setTitle()
- 添加带标题的card-header
divsetColor()
- 设置表单颜色setAjax()
- 通过ajax提交表单addBox()
- 此调用之后添加的所有输入将在新的卡片中渲染setFloatingLabel()
- 输入将使用 浮动标签 进行渲染setRenderInline()
- 标签和输入各自在单独的行中渲染setRenderManually()
- 设置手动渲染,使用与表单同名的模板(例如,文件MyForm.php
->myForm.latte
)
组
表单以BS5 卡片 进行渲染 - 每个卡片代表一个组
输入在 card-body
div中渲染
提交者、链接和按钮在 card-footer
中
容器
容器作为标准的Nette Continer工作,并具有以下新功能
setId()
- 向容器的外部div添加html idshowCard()
- 将容器作为BS5 卡片 显示setTitle()
- 显示容器的标题(仅当容器作为卡片渲染时才有效)setColor()
- 设置容器的颜色(仅当容器作为卡片渲染时才有效)
输入
一些输入提供了新功能
setIcon()
- 向输入或按钮添加图标(按钮、链接、文本输入)setColor()
- 向输入或按钮添加颜色(按钮、链接、复选框、列表)setTemplate()
- 添加自定义latte模板而不是基本渲染(所有输入)setPrepend()
- 向 输入组 添加前缀部分(文本输入、选择框)setAppend()
- 向 输入组 添加后缀部分(文本输入、选择框)setRenderInline()
- 标签和输入各自在单独的行中渲染,覆盖表单的renderInline
设置(所有非按钮输入)setFloatingLabel()
- 输入将使用 浮动标签 进行渲染(文本输入、选择框)setAutorenderSkip()
- 跳过输入的渲染,例如输入作为另一个输入(所有输入)的模板部分时setTooltip()
- 向输入添加带有工具提示的图标(文本输入、复选框、列表、选择框)setWrapClass()
- 设置围绕标签和输入的外部div的类 - 覆盖基本的col-
类(文本输入、复选框、列表、选择框)setLabelWrapClass()
- 设置围绕标签的包装div的类 - 覆盖基本的col-
类(文本输入、复选框、列表、选择框)setInputWrapClass()
- 设置围绕输入的包装div的类 - 覆盖基本的col-
类(文本输入、复选框、列表、选择框)
复制器示例
$duplicator = $form->addDuplicator('duplicator', function(\ModulIS\Form\DuplicatorContainer $container)
{
$container->addText('text', 'Text input');
$container->addSubmit('del', 'Smazat');
}, 1);
$duplicator->addSubmit('add', 'Přidat');