Zend framework Zend表单填充方法

Zend framework Zend表单填充方法,zend-framework,zend-form,Zend Framework,Zend Form,我有一个Zend表单,下面是代码 public function editAction() { try { $data = Zend_Auth::getInstance()->getStorage()->read(); $this->view->UserInfo = $data['UserInfo']; $this->view->Account = $data['Account'];

我有一个Zend表单,下面是代码

 public function editAction()
{
    try 
    {
        $data = Zend_Auth::getInstance()->getStorage()->read();
        $this->view->UserInfo = $data['UserInfo'];
        $this->view->Account = $data['Account'];
        $UserEditForm = $this->getUserEditForm();
        $this->view->UserEditForm = $UserEditForm;
        $params = $this->_request->getParams();
        if ($params['user'])
        {
            $UserResult = $this->_user_model->getUserData($params['user']);
            $UserAddressResult = $this->_user_model->getAddressData($params['user']);
            $UserInfo = Array(
                'UserId'        =>  $UserResult['user_id'],
                'EmailAddress'  =>  $UserResult['email'],
                'UserName'      =>  $UserResult['username'],
                'Title'         =>  $UserResult['Title'],
                'FirstName'     =>  $UserResult['firstname'],
                'LastName'      =>  $UserResult['lastname'],
                'Gender'        =>  $UserResult['gender'],
                'DateOfBirth'   =>  date('m/d/Y', strtotime($UserResult['dateofbirth'])),
                'AddressLine1'  =>  $UserAddressResult['address_1'],
                'AddressLine2'  =>  $UserAddressResult['address_2'],
                'City'          =>  $UserAddressResult['city'],
                'State'         =>  $UserAddressResult['state_id'],
                'PostalCode'    =>  $UserAddressResult['postcode'],
                'Country'       =>  $UserAddressResult['country_id'],
                'CompanyName'   =>  $UserAddressResult['company'],
                'WorkPhone'     =>  $UserAddressResult['workphone'],
                'HomePhone'     =>  $UserAddressResult['homephone'],
                'Fax'           =>  $UserAddressResult['fax'],
                'IsDashboardUser'   => $UserResult['is_dashboard_user']
            );
            $UserEditForm->populate($UserInfo);
            $this->view->UserEditForm = $UserEditForm;
        }
        if ($this->_request->isPost())
        {
            $values = $this->_request->getPost();
            unset($values['Save']);
            if ($UserEditForm->isValid($values))
            {
                $Modified_date = date('Y-m-d H:i:s');
                $UserData = $this->_user_model->CheckEmail($values['EmailAddress']);
                $UpdateData = $this->_user_model->UpdateUserData($UserData['user_id'], $values, $Modified_date, $data['UserId']);
                if ($UpdateData != null)
                {
                    return $this->_helper->redirector('userlist','index','user');
                }
            }
        }  
    }
    catch (Exception $exception)
    {
        echo $exception->getCode();
        echo $exception->getMessage();
    }   
}
因为我的表单元素名称与我的表字段名称不同,所以我必须声明一个数组$UserAddressResult(请参见上面的代码),以便将表字段名称与表单元素名称匹配

是否有其他方法可以在不声明此数组的情况下填充表单


请不要建议我必须保持表字段名和表单元素名相同。按照我们的命名约定标准,我不能这样做

您的命名约定不一致。如果它是一致的,您也许可以使用一个简单的正则表达式来转换列名。但是你不能,所以你必须用一种或另一种方式手动完成


如果您需要在代码中的多个地方构建此值数组,则应考虑将逻辑移动到窗体本身(用<代码>公共函数扩展PufAuthFuffMuleRand结果($URESREST,$USER地址)< /代码>)或动作助手。

我们决定按照表字段名称保留表单元素的相同名称。目前,我认为这是唯一的解决办法。如果我在未来遇到任何其他解决方案,将在此处更新


感谢您的回复……

调整您的命名约定标准,也许?;)如果这是经常使用的东西,我会尝试至少创建一个方法或类来规范化这些数据,可能在您的一个模型中。