我正在使用Zend 1.11。我有一个表单,它接受来自用户的输入并将数据保存到可正常工作的数据库表中。如何在Zend PHP框架中为一个模型实现两种形式
但是我想要实现的功能允许用户使用Excel工作表将多个记录导入到数据库表中。我正在使用PHPExcel
库。
目前我所有的表格都在\library\App\Form\
,命名约定为ModelNameForm.php
。我如何为容纳文件上传的模型添加第二个表单?
非常感谢,
Sid。
我正在使用Zend 1.11。我有一个表单,它接受来自用户的输入并将数据保存到可正常工作的数据库表中。如何在Zend PHP框架中为一个模型实现两种形式
但是我想要实现的功能允许用户使用Excel工作表将多个记录导入到数据库表中。我正在使用PHPExcel
库。
目前我所有的表格都在\library\App\Form\
,命名约定为ModelNameForm.php
。我如何为容纳文件上传的模型添加第二个表单?
非常感谢,
Sid。
我来的解决方案很简单。
我只发现它很困难,因为我第一次使用Zend,尽管我熟悉MVC方法。
我之前使用过CakePHP,需要开发人员遵循约定,而Zend允许用户形成自己的约定。
我正在使用的Zend应用程序是由我的同事创建的,他使用了自己的命名约定来处理表单类(ModelNameForm.php),因为我不确定这个命名约定是Zend的一部分还是表单类可以被命名为任何东西。
在访问Zend IRC频道后,我被告知我可以创建另一个表单类并将其命名为任何我想要的名称,并在使用它的控制器的功能中指定它。
所以我刚刚创建了另一个表单类,并在使用它的函数中指定。
但是在做完这些之后,我发现创建第二个表单并不是必须的,因为它只有一个字段与第一个表单不同,并且这可以用于在第一个表单类中使用if语句。
为什么不为模型创建一个属性,您可以在其中保存窗体的名为的实例。然后你可以制作一个像getForm()在模型中,所以你可以通过它的名字来访问表单。我首先想到的就是这一点。
我有一个类似的布局,但我使用表单类中的静态函数调用来获取特定类型的表单。例如
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
}
如果一个模型有很多不同的形式,这种方法很有用。谢谢。 – Sid 2011-02-08 15:09:58