2011-02-03 63 views
0

我正在使用Zend 1.11。我有一个表单,它接受来自用户的输入并将数据保存到可正常工作的数据库表中。如何在Zend PHP框架中为一个模型实现两种形式

但是我想要实现的功能允许用户使用Excel工作表将多个记录导入到数据库表中。我正在使用PHPExcel库。

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

非常感谢,

Sid。

回答

0

我来的解决方案很简单。

我只发现它很困难,因为我第一次使用Zend,尽管我熟悉MVC方法。

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

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

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

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

但是在做完这些之后,我发现创建第二个表单并不是必须的,因为它只有一个字段与第一个表单不同,并且这可以用于在第一个表单类中使用if语句。

0

为什么不为模型创建一个属性,您可以在其中保存窗体的名为的实例。然后你可以制作一个像getForm()在模型中,所以你可以通过它的名字来访问表单。我首先想到的就是这一点。

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 
} 
+0

如果一个模型有很多不同的形式,这种方法很有用。谢谢。 – Sid 2011-02-08 15:09:58