我需要创建一个显示对象属性的表单来编辑它们。
上个月我使用了 symfony,我不得不在控制器中这样做:
// retrieve the object $user from the database and then
$this->form = new UserForm($user);
我应该在 zf 1 中做什么?创建一个构造函数?是否已经对此有所了解?
另一个问题:通常如何调用该操作?
我需要创建一个显示对象属性的表单来编辑它们。
上个月我使用了 symfony,我不得不在控制器中这样做:
// retrieve the object $user from the database and then
$this->form = new UserForm($user);
我应该在 zf 1 中做什么?创建一个构造函数?是否已经对此有所了解?
另一个问题:通常如何调用该操作?
在 ZF 中,您将构建一个Zend_Form,它以您的 User 对象为模型。称之为用户表单。然后,当您需要在 CRUD 操作中使用该表单时,您将从控制器实例化该表单,检索您的 User 对象,然后使用该对象填充表单的值。
您可以在控制器上内联构建用户表单......$form = new Zend_Form...
或者,正如我通常喜欢的那样,编写一个扩展 Zend_Form 的类 User_Form。使您的表单更易于管理和重用。
这是一些示例代码...
我假设您可以编写 User_Form 类,文档应该解释所有这些......让我们说它是一个包含名字和姓氏的几个文本元素的表单。
在您的控制器上...
$user = new User::Factory(array('id' => 1));
$form = new User_Form('myUserForm');
//keys would be the name of the form elements on the User Form
$formValues = array( 'firstName' => $user->getFirstName(),
'lastName' => $user->getLastName());
$form->populate($formValues);
然后你只需将 $form 传递给视图并渲染它。显然需要在控制器上编写更多逻辑来处理首次加载/提交场景。希望这至少能让你开始。如果您正在寻找可以从您传递的对象自动生成表单的东西,那么您就不走运了。
不知道你在搜索什么词。也许是“实例化”或“声明”?