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()方法读取该行不包含空值。

+0

完美。这是导致错误的空值。非常感谢你! – 2010-10-07 20:10:31

+0

+1今天保存了我的理智:-) – Havelock 2012-10-10 15:13:37