modul-is/form

简化版的Nette表单

v1.2.1 2024-09-27 09:56 UTC

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 div
  • setColor() - 设置表单颜色
  • setAjax() - 通过ajax提交表单
  • addBox() - 此调用之后添加的所有输入将在新的卡片中渲染
  • setFloatingLabel() - 输入将使用 浮动标签 进行渲染
  • setRenderInline() - 标签和输入各自在单独的行中渲染
  • setRenderManually() - 设置手动渲染,使用与表单同名的模板(例如,文件 MyForm.php -> myForm.latte

表单以BS5 卡片 进行渲染 - 每个卡片代表一个组

输入在 card-body div中渲染

提交者、链接和按钮在 card-footer

容器

容器作为标准的Nette Continer工作,并具有以下新功能

  • setId() - 向容器的外部div添加html id
  • showCard() - 将容器作为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');