PHP和jQuery表单创build和validation库可用?
原来的问题
有没有一个经过良好testing,最好是成熟的库在那里用于创buildPHP的客户端(这是jQuery进来的地方)和服务器端validation的forms?
理想情况下,表单要么从PHP类生成,要么写成纯HTML和parsingala Agavi 。 然后,库自动创build正确的jQuery钩子,以便包含的jQuery客户端validation可以运行。
我经常做的工作之一就是在旧的联系表单上进行一些修改,我希望将这项工作标准化,以便我每次都能拿出相同的最佳实践代码。 考虑到这一点,PHP类生成的HTML应该足够好,以便可以在需要时添加额外的CSS钩子等。
任何build议感激地收到。
更新
我一直在梳理和回顾我发现的以及其他人在下面提出的选项,现在我将按照以下顺序对项目进行sorting,以便在所有这些项目上进行less量的testing和研究。
- ValidForm Builder
- jFormer
- HTML_QuickForm2 (如果你能得到客户端validation工作,那么这应该比jFormer跳得更高!)
- PHP的formsbuild设者级
- 使用Symfony! (整个MVC框架的表单渲染和validation是矫枉过正)
我仍然不相信任何诚实的select,而我仍然想知道为什么从事这些项目的人不会从一些坚实和经过良好testing的组件开始。 例如,我会想到一个组合:
- Parsley.js客户端validation
- Symfony窗体组件也许
- 也许有尊重validation
会给你一个良好的稳定的基础工作,并在testing组件上生成一个不错的库。
另外,如果您对parsingHTML的库感兴趣,而不是从PHP类生成HTML,我find了一个名为Minacl的项目。 就像我在原始问题中提到的Agavi选项一样。
您可以使用ValidForm Builder 。 它与您的要求完美匹配:通过它,您可以使用PHP中的validation规则定义Forms,并通过jQuery和客户端validation生成Forms。
function列表(取自他们的网站):
- API生成符合XHTML严格1.0的代码。
- 在客户端进行字段validation以尽量减less通信开销。
- 在服务器端进行字段validation,以执行validation规则,并防止通过SQL注入对表单进行回火。
- 客户端validation显示内联以提高用户满意度。 没有更多恼人的popup窗口,没有真正告诉你什么。
- 轻松创build复杂的表单结构。
- 使用stream行的jQuery Javascript库进行DOM操作。
- 完全可定制使用CSS。
- 以HTML和纯文本自动为表单邮件程序创build字段汇总。
- 这是开源的,因此完全免费( 这里是GitHub回购 )!
2017年更新
敏捷UI是一个PHP UI组件库(以及atk4.3的inheritance者),包括如下内容:
- 交互式表单
- CRUD
- 格
- 菜单
- Paginators
- 请参阅http://ui.agiletoolkit.org/demos/index.php
所有组件都有一个一致且简单的PHP接口:
$form = new \atk4\ui\Form(); $layout->add($form); $form->setModel(new Country($db));
如果你喜欢CRUD,只需使用\atk4\ui\CRUD
。 敏捷用户界面也提供了添加自定义组件的工具。
与其他软件比较:
- 输出HTMLforms
$form->render()
或整个web应用程序。 - 自动使用语义UI进行样式化
- 服务器端validation,内联显示错误。
- 表格布局
- 包括支持jQuery UI。
- 通过敏捷数据 ,SQL,NoSQL存储数据
- 支持自定义HTML模板
- 开放源代码和麻省理工学院许可
我碰到的一个选项是jFormer ,但是它的历史很短,而PHP代码对于一个大型的3000行文件充满了多个类是不太理想的。 它不采取模块化的方法。
在HTML_QuickForm2中运行客户端validation的问题究竟是什么?
它需要一个quickform.js文件来工作。 该文件与软件包一起安装,但不会自动包含在窗体输出中。 我最近更新了文档 ,使这个问题更加明显。
自从你的问题QF2有几个版本,几个JS相关的错误被压扁。 考虑给它另一个尝试:我们的目标是一个稳定的版本真的很快现在,并会喜欢反馈。
虽然今天透过PEAR存储库,我注意到, HTML_QuickForm2已经做了一个新版本,现在也支持客户端validation。 它不使用jQuery,但他们已经写出了自己的JS框架的工作。
也许你可以使用Symfony框架。 它提供了一个模型 – 视图 – 控制器层和自动生成模型。 有许多validation选项。 但是我认为还需要对JQuery客户端validation进行一些修改。
我偶然发现了一个名为jquery-ahm的jQuery插件。 它将validation逻辑移动到服务器,但在客户端使用JavaScript执行。 在页面的底部,你会看到一个表单validation的例子。
Html标记:
<form id="form" action="/a.form" method="post" class="ahm"> <p>Name</p> <input name="name" id="name" value="" type="text"> <p>Email</p> <input name="email" id="email" value="" type="text"> <p>Password</p> <input name="password" id="password" value="" type="text"> <br><input value="Submit Form" type="submit"> </form>
PHP代码:
<?php // catch errors foreach (array("name", "email", "password") as $key) { if (empty($_POST[$key])) { $error["#$key/addClass"] = "error"; $error["#$key/after"] = "<span class="error">Please enter $key</span>"; } } // get response if (!empty($error)) { $reset["input.error/removeClass"] = "error"; $reset["span.error/remove"] = ""; $response = $reset + $error; // reset errors before applying new ones } else { $response["#form/replaceWith"] = "<strong>Form successfully submitted</strong>"; } // return response return $response; ?>
结果: