SO でこれに対する回答を検索しました。Zend フレームワークと AJAX に関する回答は見つかりましたが、問題を解決できません。
AJAX POST メソッドを使用してテーブルの行を削除したいと考えています。
これを行う理由は、Web 開発者が私のプロジェクトに変更を加えることができるようになったため、私が介入して自分でいくつかのことを実行しようとする必要があるためです (そのため、多少明白なことを見落とします)。
HTML:
<a class="btn btn-danger delete_request_button" data-rid="<?php echo $row['id']?>" data-did="<?php echo $row['dealer_id']?>" href="#delete_request_button" data-toggle="modal">Delete</a>
jQuery:
jQuery('.delete_request_button').click(function(){
var id = jQuery(this).attr('data-rid');
jQuery('#request_id').val(id);
jQuery.post('<?php echo $this->baseUrl("requests/delete")?>', { id: id }, function(response) {
}).complete(function(){
alert(id + ' deleted')
});
});
コントローラ:
function deleteAction()
{
$id = $this->getRequest()->getParam('id');
if($request->isPost()) {
$this->model_dealer->deleteRequest($id);
exit();
}
}
モデル:
public function deleteRequest($id)
{
$where = $db->quoteInto('id = ?', $id);
$db->delete('dealers_vehicle_requests', $where);
}
そして、ここに私のテーブルがあります:
CREATE TABLE `dealers_vehicle_requests` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`dealer_id` bigint(20) DEFAULT NULL,
`message` text,
`requested_on` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`status` char(1) DEFAULT 'P',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;
これはおそらくひどいコードのマッシュアップだと思いますが、この問題を解決するための最後の手段として SO を使用しています。
ありがとう!
編集:修正
モデル:
public function deleteRequest($id)
{
$where = $this->dealers_subscriptions->getAdapter()->quoteInto('id = ?', $id);
$this->dealers_vehicle_requests->update(array('status' => 'D'), $where);
}
コントローラ:
function deleteAction()
{
$request = $this->_request;
$id = $request->getParam('id');
if($request->isPost()) {
$this->model_dealer->deleteRequest($id);
exit();
}
}
他のすべては同じままでした。
この質問を手伝ってくれたすべての人に感謝します。