PHPUnit:传递Zend_Db_Table_Row_Abstract时传递给setPost()的值无效toArray()
问题描述:
以下代码失败抛出Zend_Controller_Exception (“传递给setPost()的值无效;必须是值数组或键/值对“)PHPUnit:传递Zend_Db_Table_Row_Abstract时传递给setPost()的值无效toArray()
/** Model_Audit_Luminaire */
$luminaireModel = new Model_Audit_Luminaire();
if (!$fixture = $luminaireModel->getScheduleItem($scheduleId)) {
$this->fail('Could not retrieve fixture from database');
}
$fixtureArray = $fixture->toArray();
$this->getRequest()
->setMethod('POST')
->setPost($fixtureArray);
我做了的var_dump(),以确保$ fixtureArray是正确的类型,格式正确......没有明显的问题。
答
您的日程项目行中的任何列是否可以为空?
setPost()
方法为您在数组中传递的每个键/值对调用自身。但是,如果任何值为null,则会引发异常。
您可能需要循环阵列上方和setPost()
只有那些非空值:
$this->getRequest()->setMethod("POST");
foreach ($fixtureArray as $key => $value) {
if ($value === null) { continue; }
$this->getRequest()->setPost($key, $value);
}
要不然确保您从数据库中你getScheduleItem()
方法读取该行不包含空值。
完美。这是导致错误的空值。非常感谢你! – 2010-10-07 20:10:31
+1今天保存了我的理智:-) – Havelock 2012-10-10 15:13:37