Zend Framework中的批量用户创建。已经有单个用户创建工作

时间:2011-02-21 16:19:13

标签: php validation zend-framework zend-form

我正在使用Zend Framework我有一个允许我创建用户的表单。它具有所有必要的验证,并且运行良好。

我的任务是创建一个页面,允许我通过一次提交创建最多25个新用户。

示例:

  • 致敬/名字/姓氏/电子邮件
  • 致敬/名字/姓氏/电子邮件
  • 致敬/名字/姓氏/电子邮件
  • 致敬/名字/姓氏/电子邮件

如何利用我为单个用户创建的表单并允许每个新用户单独进行验证?

有没有办法让一组表格或其他东西能达到同样的效果?

1 个答案:

答案 0 :(得分:3)

尝试这样的事情(未经测试):

class BulkUserForm extends Zend_Form
{
    private $_howMany = 1;

    public function __construct( $howMany, $options )
    {
        $this->_howMany = (int) $howMany;
        parent::__construct( $options );
    }

    public function init()
    {
        for( $i = 1; $i <= $this->_howMany; $i++ )
        {
            $userForm = new YourOriginalUserForm();
            $userForm->setElementsBelongTo( 'user' . $i ); // not sure this is actually necessary anymore, because of the second param to addSubForm
            $this->addSubForm( $userForm, 'user' . $i, $i );
        }
    }
}

用法:

$form = new BulkUserForm( 25 /* [, $options ] */ );
echo $form;

// validation:
$form->isValid( $this->getRequest()->getPost() ); // or something similar

说明:

对子表单的setElementsBelongTo()调用应创建与此类似的表示法(当然简化):

<input type="radio" name="user1[salutation]">
<input type="text" name="user1[firstName]">
<input type="text" name="user1[lastName]">
<input type="text" name="user1[email]">

您的表单应该能够在验证时自动识别提交的POST值。

当然你也应该考虑子表格的布局/装饰,但我会把它作为练习留给你。 ; - )

修改
抱歉,addSubForm()的第二个参数是强制性的(现在添加它,并添加了可选的$order参数)。我相信它也应该自动将子表单设置为属于正确的命名空间。虽然不完全确定。如果您忽略子表单上的setElementsBelongTo()调用,请看看会发生什么。