Zend Framework 2:如何向ZfcUser的注册表单添加其他字段?

时间:2012-09-28 03:59:58

标签: php zend-framework2

我安装了 ZfcUser 并将first_name / last_name列添加到我的用户表中。

如何覆盖注册表单并将first_name / last_name添加到视图中?

我知道如何覆盖视图。但我猜我还需要覆盖用户控制器或用户表单。这就是我被困的地方 - 我不知道如何覆盖控制器/表格。

我已经创建了自己的用户模块,用于覆盖。

任何人都可以给我一个提示吗?

2 个答案:

答案 0 :(得分:2)

注意在ZfcUser \ Form \ Register中有__construct()方法的事件调用,它是:

        $this->getEventManager()->trigger('init', $this);

因此,您可以扩展Register表单并按

添加first_name / last_name元素
class MyForm extends ZfcUser\Form\Register {
    public function init(){
        $this->add(array(
            'name' => 'first_name',
            'options' => array(
                'label' => 'First Name',
            ),
            'attributes' => array(
                'type' => 'text'
            ),
        ));

        $this->add(array(
            'name' => 'last_name',
            'options' => array(
                'label' => 'Last Name',
            ),
            'attributes' => array(
                'type' => 'text'
            ),
        ));
    }
}

然后,您可以在Module.php中将表单添加为服务

public function getServiceConfig()
{
    return array(
        'factories' => array(
            'myform' => function ($sm) {
                $form = new MyForm(null, $options);
                return $form;
            },
        ),
    );
}

最后,正如您所说,您还需要将first_name / last_name输入元素输出到视图。

答案 1 :(得分:0)

我相信您也可以编写自己的实体类,如ZfcUser \ Entity \ User.php中的实体类,然后确保编辑Zfcuser配置。

我喜欢AlloVince的答案,我实际上是要尝试一下。我正在处理的SaaS应用程序将具有动态表单,因此我将测试他现在的