zored/reverse-form

使用视图脚本渲染ZF3表单。它可以扩展到使用其他框架,如Twitter Bootstrap。

安装: 1

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 11

语言:HTML

类型:模块

1.0.0 2017-11-24 15:09 UTC

This package is not auto-updated.

Last update: 2024-09-29 04:46:57 UTC


README

这是一个早期alpha版本,一些功能已经实现,但未来的工作方式可能会有所改变。

Uni-Form表单示例在:http://reverseform.modo.si/form/test-uniform

Twitter Bootstrap表单示例在:http://reverseform.modo.si/form/test-bootstrap

介绍

ReverseForm是一个表单渲染模块。它通过视图助手创建渲染对象。它还提供了一个扩展了Zend\Form\Element的对象,即ReverseForm\ExtendedElement,这将有助于更快地创建更复杂的元素。

目标

  • 支持其他框架渲染表单,如移动端框架。
  • 提供创建新元素的统一方式。它应该处理元素的JS、CSS和配置部分。
  • 元素应该支持本地化。

使用Composer安装

  1. 在您的composer.json中添加此项目
    "require": {
        "zored/reverse-form": "0.1",
    }
  1. 使用composer获取仓库
$ php composer.phar update
  1. 在您的config/application.config.php文件中启用它
return array(
    'modules' => array(
        // ...
        'ReverseForm',
    ),
    // ...
);

表单渲染器

目前我提供了两种类型的渲染器,但通过扩展ReverseForm\Renderer可以轻松创建其他渲染器。在开始之前,请查看/config/module.config.php中的所有选项。

  • ReverseForm\Renderer\Uniform使用额外的标记来渲染表单,使其与Uni-Form兼容。
  • ReverseForm\Renderer\Bootstrap显然渲染Twitter Bootstrap

Uniform渲染器

    $this->form->setAttribute('action', $this->url('album', array('action' => 'test-form')));
    $formRenderer = $this->formRenderer($form, 'renderer.uniform', 'vertical'); // vertical or horizontal
    $formRenderer->prepare(); // this is how you create it in your viewscript

Uni-Form获取您的CSS。检查module_config.php中加载文件的路径。

Bootstrap渲染器

    $this->form->setAttribute('action', $this->url('album', array('action' => 'test-form')));
    $formRenderer = $this->formRenderer($form, 'renderer.bootstrap', 'vertical'); // vertical or horizontal
    $formRenderer->prepare(); // this is how you create it in your viewscript

它不会自动将CSS或JS文件加载到视图中。如果您需要加载额外文件,可以从配置中完成。

使用方法

在您的视图脚本中执行

	<h1>Form Testing</h1>
	<?php
	$form = $this->form;
	$form->setAttribute('action', $this->url('album', array('action' => 'test-form')));
	$formRenderer = $this->formRenderer($form, 'renderer.uniform', 'horizontal');
	$formRenderer->prepare();
	echo $formRenderer->openTag();
	?>
	
	<div class="well">
	    <?php print_r($form->getMessages()); ?>
	</div>
	
	<fieldset class="<?= $formRenderer->_formStyle; ?>">
	
	<legend>Some Legend</legend>
	
	<?= $formRenderer->formHidden($form->get('security')); ?>
	<?= $formRenderer->formRow($form->get('status')); ?>
	<?= $formRenderer->formRow($form->get('status2')); ?>
	<?= $formRenderer->formRow($form->get('status3')); ?>
	
	<?= $formRenderer->formRow($form->get('codemirrortest')); ?>
	<?= $formRenderer->formRow($form->get('tinymcetest')); ?>
	
	<?= $formRenderer->formRow($form->get('datepicker')); ?>
	<?= $formRenderer->formRow($form->get('datetimepicker')); ?>
	<?= $formRenderer->formRow($form->get('daterangepicker')); ?>
	<?= $formRenderer->formCaptcha($form->get('captchaImage')); ?>
	
	<?= $formRenderer->formRow($form->get('gmap')); ?>
	<?= $formRenderer->formRow($form->get('artist')); ?>
	<?= $formRenderer->formRow($form->get('title')); ?>
	<?= $formRenderer->formRow($form->get('file')); ?>
	
	<?= $formRenderer->formRow($form->get('countrytextarea')); ?>
	<?= $formRenderer->formAction($form->get('actions')); ?>
	</fieldset>
	
	<?= $formRenderer->closeTag(); ?>
	
	<script>$(document).ready(function(){<?= $formRenderer->getElementJsContent(); ?>});</script>

在您的操作中执行

    $form = new ReverseForm\Form\TestForm();

    if ($this->getRequest()->isPost()) {

        $form->setInputFilter(new InputFilter);

        $form->setData($this->getRequest()->getPost());

    }

    return array('form' => $form, 'post' => $this->getRequest()->getPost());

您应该这样做

请随意改进它。将它们合并到项目中,并感谢您。

待办事项

  • 许多元素视图脚本看起来很相似,唯一的区别是JS部分。将所有看起来相同的元素重构为一个视图脚本。已完成。
  • 编写一些良好的文档。
  • 演示模块正在路上。
  • 找出字段模板的当前方式太丑了