ezformz/ezformz

适用于PHP 5.3+的表单构建和验证

dev-master 2013-01-24 05:17 UTC

This package is not auto-updated.

Last update: 2024-09-28 12:48:07 UTC


README

基本用法

包含ezformz.php后,您可以

  • 使用新运算符(即 new EzFormz;)获取实例
  • 委托对象构造(例如CodeIgniter创建库的伪单例时,即 $this->ezformz)然后在该对象范围内调用instance()方法创建一个新(可选命名)实例
  • 使用instanceStatic方法创建一个新(可选命名)实例

如果您在页面上嵌入多个表单、重复使用部分或仅出于组织/清晰性原因,则可能希望使用命名实例。


$form = EzFormz::instanceStatic('optional-instance-name')
	->open()
	->text('my_field', array('label' => 'My Field', 'rules' => 'required|numeric'))
	->submit('submit', array('label' => 'Submit'))
	->close();

EzFormz在HTML表单字段及其已知参数和方法之间提供一对一的关系


->text('name', array('label' => 'Your Name'))
->select(
	'gender',
	array(
		'label' => 'Your Gender',
		'options' => array(
			'M' => 'Male',
			'F' => 'Female'
		)
	)
)
->checkbox(
	'newsletter',
	array(
		'label' => 'Sign up for newsletter?',
		'value' => 1
	)
)
->textarea(
	'comments'
	array(
		'label' => 'Your comments'
	)
)
->file(
	'upload'
	array(
		'label' => 'Your file'
	)
)

多方法

如果您想使多个表单元素在同一行显示,则可以使用多方法。您的单个元素构造的唯一区别是,它们不是自身的方法调用,而是作为数组传递给多方法。


->multi(
	'text',
	array(
		array('first_name', array('label' => 'First name')),
		array('last_name', array('label' => 'Last name'))
	)
)

规则和回调

EzFormz支持验证规则以及验证回调。验证规则旨在作为简单的规则,如下所示


	'rules' => 'required|is_domain|matches[pattern]'

每个规则由管道分隔。参数传递在[]内。您可以在类文件中查看可用的完整验证函数列表。它们以validator为前缀。

您还可以传递回调。回调通过提供函数、参数数组和断言来实现。如果断言失败,您提供的错误消息将添加到错误属性中,并使验证失败。您可以传递闭包(这是一种在临时方式中添加特殊验证方法的好方法),或传递对象。参数作为数组传递,但您可以决定是否希望您的函数接收它作为一个单独的数组参数或作为参数列表。以下是一个验证用户尚不存在的方法示例


	$form
    	->open()
        ->text(
        	'email',
             array(
             	'label' => 'Email',
                'rules' => 'required',
                'rules_callback' => array(
                	array(
                    	'object' => $model_user,
                        'function' => 'user',
                        'args' => array('email' => $i->post('email')),
                        'args_as_list' => false,
                        'assert' => false,
                        'error' => 'User with email '.$i->post('email').' is already registered.'
                    )
                )
			)
		)
		...other fields
		->submit()
	->close();

验证和错误

您可以通过表单对象的公共错误属性、使用error_list()方法(该方法生成一个错误的无序列表)或使用error_json()来检索错误。


if(//form posted){
	if(!$form->validate()){
		$error_list = $form->error_list();

		//Send $error_list to your view
		...
	}
	else
	{
		//Do ya thang homie
	}
}

显示您的表单


echo $form;

当您准备好显示表单时,只需简单地echo表单(或将它分配给另一个变量然后echo那个变量)。它使用PHP的__toString魔法方法来显示表单。

结论

显然,EzFormz关于轻松地将方法链接在一起,并且拥有一个用于处理字段的标准、预期界面。每个字段的名称始终对应于它产生的HTML表单元素(选择、文本区域、文本、复选框等)。第一个参数始终是字段的名称,第二个始终是一个选项数组。一些选项,如标签和规则,是特殊的。大多数选项本身不在库中定义,将被任意添加到您的HTML元素中(因此您可以添加类、id、ref、自定义javascript等)。

EzFormz仍处于早期阶段,只有少数验证方法存在(尽管提供了正则表达式验证,因此您可以做任何想做的事),但我认为这是一个处理表单的绝佳界面,并希望您也会同意!