现在我正在从控制器中填充/ setDefaults这样的zend_form:
$data = array('user' => $account->getUser(),
'password' => $account->getPassword(),
'name' => $account->getName());
$form->setDefaults($data);
它正在工作但接缝非常手动的过程。有没有更好的方法呢?
答案 0 :(得分:4)
“明显的”解决方案是以某种方式将实体扁平化为数组。这不是很难做到,虽然一些角落案件可能会变得丑陋。
最好看的(我还没有尝试过,但即将到来)我遇到的罐头实施是this one(有些docs are here)。
它使用反射来查看实体元数据,然后对要返回的结构类型做出一些好的猜测。总体而言,这似乎是最好的策略。我怀疑要处理异常结构化的实体,你可能想要调整Boris的类来检查实体上的自定义序列化方法,如果存在,让实体自行序列化。
答案 1 :(得分:4)
我申请的解决方案是将此功能添加到实体:
public function toArray ()
{
return get_object_vars($this);
}
然后只是:
$form->setDefaults($test->toArray());
另外如果您需要以反方式(数组到对象)的方式执行此操作,您可以查看here