如何在Zend PHP框架中为一个模型实现两个表单

时间:2011-02-03 12:35:02

标签: php zend-framework forms file-upload

我正在使用 Zend 1.11 。我有一个表单,它从用户获取输入并将数据保存到数据库表,工作正常。

但是,我还希望实现允许用户使用Excel工作表将多个记录导入数据库表的功​​能。我正在使用PHPExcel库。

目前我的所有表单都在\library\App\Form\中,其命名约定为ModelNameForm.php。如何为适合文件上传的模型添加第二个表单?

非常感谢,

西特。

3 个答案:

答案 0 :(得分:1)

我有一个类似的布局,但我在表单类中使用静态函数调用来获取特定类型的表单。例如

class User_Model_Form extends My_Form
{
    // All functions can be passed a model to pre-populate the form 
    // when editing and existing model

    public static function getRegisterForm($model = null)
    {
        // Build and return form here
    }

    public static function geLoginForm($model = null)
    {
        // Build and return form here
    }

    public static function getChangePasswordForm($model = null)
    {
        // Build and return form here
    }

    // Etc
}

答案 1 :(得分:0)

为什么不为模型创建一个属性,您可以在其中保存调用的表单类实例。那么你可以制作一个像模型中的getForm(),以便您可以通过它的名称访问表单。这就是我首先想到的。

答案 2 :(得分:0)

我遇到的解决方案很简单。

我发现很难,因为我第一次使用Zend,虽然我熟悉MVC方法。

我之前使用CakePHP要求开发人员遵循约定,而Zend允许用户形成自己的约定。

我正在处理的Zend应用程序是由我的同事创建的,他使用了自己的表单类命名约定(ModelNameForm.php)让我感到困惑,因为我不确定这个命名约定是Zend的一部分还是表单class可以命名为任何东西。

在访问Zend IRC频道后,我被告知我可以创建另一个表单类和其他表单,并将其命名为我想要的,并在使用它的控制器的功能中指定它。

所以我刚创建了另一个表单类,并在使用它的函数中指定。

然而,在这样做之后我发现创建第二个表单是没有必要的,因为我只有一个字段与第一个表单不同,这可以在第一个表单类中使用if语句。