2010-10-06 25 views
1

Le code suivant échoue jette une Zend_Controller_Exception ("Valeur non valide transmise à setPost(); doit être un tableau de valeurs ou une clé/valeur paire ")PHPUnit: "Valeur non valide transmise à setPost()" lors du passage de Zend_Db_Table_Row_Abstract converti en utilisant 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); 

je l'ai fait un var_dump() pour assurer fixtureArray $ était le type correct et formaté correctement ... aucun problème visible.

Répondre

4

L'une des colonnes de la ligne d'élément de planification est-elle nulle?

La méthode setPost() s'appelle elle-même pour chaque paire clé/valeur que vous passez dans un tableau. Mais si une valeur est nulle, elle déclenche une exception.

Vous pourriez avoir à boucle sur le tableau et setPost() uniquement des valeurs qui ne sont pas nulles:

$this->getRequest()->setMethod("POST"); 
foreach ($fixtureArray as $key => $value) { 
    if ($value === null) { continue; } 
    $this->getRequest()->setPost($key, $value); 
} 

Ou bien faire en sorte que la ligne que vous rapportez de la base de données dans votre méthode getScheduleItem() ne contient pas de valeurs nulles.

+0

Parfait. Ce sont les valeurs nulles qui ont provoqué l'erreur. Merci beaucoup! –

+0

+1 Sauvé ma santé aujourd'hui :-) – Havelock