1

次のコードは Zend_Controller_Exception をスローして失敗します("無効な値が setPost() に渡されました。値の配列またはキーと値のペアのいずれかである必要があります")。

/** 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);

$fixtureArray が正しいタイプであり、適切にフォーマットされていることを確認するために var_dump() を実行しました...目に見える問題はありません。

4

1 に答える 1

4

スケジュール アイテム行のいずれかの列が NULL 可能ですか?

このsetPost()メソッドは、配列で渡すキーと値のペアごとに自分自身を呼び出します。ただし、いずれかの値が null の場合、例外がスローされます。

配列をループし、setPost()null 以外の値のみをループする必要がある場合があります。

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

または、getScheduleItem()メソッドでデータベースからフェッチする行に null が含まれていないことを確認してください。

于 2010-10-06T21:00:40.900 に答える