2
我有一個非常惱人的問題。通過點擊「更新」按鈕,我總能得到相同的結果 - 只有最後一個元素被編輯。不幸的是我找不到解決方案。謝謝你的幫助。Zend Framework 1更新操作
這是視圖部分:
<form id="edit-action" enctype="multipart/form-data" action="<?php echo $this->baseUrl; ?>/admin/editflight" method="post">
<?php
for ($i=0; $i < count($this->flight); $i++) {
echo "<div class='edit-action-box'>".
"<input type='hidden' name='id' value='".$this->flight[$i]->id."' />".
"<input type='text' name='name' value='".$this->flight[$i]->name."' />".
"<input type='text' name='date' value='".$this->flight[$i]->date."' />".
"<textarea name='description'>".$this->flight[$i]->description."</textarea>".
"<input id='edit-button' type='submit' value='Edit' />".
"</div>";
}
?>
</form>
這是控制器部分:
function editflightAction() {
if ($this->_request->isPost()) {
Zend_Loader::loadClass('Zend_Filter_StripTags');
$filter = new Zend_Filter_StripTags();
Zend_Loader::loadClass('flight');
$flight = new flight();
$id = (int)$this->_request->getPost('id');
$name = $filter->filter($this->_request->getPost('name'));
$name = trim($name);
$date = $filter->filter($this->_request->getPost('date'));
$date = trim($date);
$description = $filter->filter($this->_request->getPost('description'));
$description = trim($description);
$data = array(
'name' => $name,
'date' => $date,
'description' => $description,
);
$where = 'id = ' . $id;
$flight->update($data, $where);
$this->_redirect('/admin/panel#flight');
return;
}
}
翻了一番。 :)你也可以爲計數器的值添加一個隱藏字段(count($ this-> flight)) – doydoy44
它總是返回相同的'id'(最後一個id),這就是爲什麼只有最後一項被修改。 – Peter