0

テーブルから投稿を削除しようとしていますが、コードは1つの投稿だけでなくすべてのテーブルデータを削除しています。

delete.php

<?php
class Form_Delete extends Zend_Form
{
    public function __construct()
    {
        @parent::__construct($options);
        $this->setName('Delete');
        $id = new Zend_Form_Element_Hidden('id');
        $title = new Zend_Form_Element_Hidden('Title');
        $description = new Zend_Form_Element_Hidden('Description');
        $submit = new Zend_Form_Element_Submit('Delete');
        $submit->setAttrib('id', 'submitbutton');
        $cancel = new Zend_Form_Element_Submit('cancel');
        $cancel->setAttrib('id', 'cancelbutton');
        $this->addElements( array( $id, $title, $description, $submit, $cancel ));
    }
}

と私のコントローラーコード

public function deleteAction()
    {
        //action body
        $request = $this->getRequest();
        $postid = (int)$request->getParam('id');
        $post = new Model_DbTable_Posts();
        $result = $post->getPost($postid);
        $this->view->post = $result;
        if(!Zend_Auth::getInstance()->hasIdentity()) {
            $this->_redirect('posts/view/id/'.$postid);
        }

        $identity = Zend_Auth::getInstance()->getIdentity();

        $acl = new Model_Acl();
        if( $acl->isAllowed( $identity['Role'] ,'posts','edit','delete') ) {
            $deleteForm = new Form_Delete();
            $deleteModel = new Model_DbTable_Posts();
            if ($this->getRequest()->isPost()) {
                if ($deleteForm->isValid($request->getPost())) {
                    $deleteModel->delete($dpostid);                 
                    $this->_redirect('index/index');
                }
            }
            $this->view->deleteForm = $deleteForm;
        }

私はこれを機能させるために何時間も試みましたが、すべてまたは何も削除することはできません。どんな助けでも素晴らしいでしょう!

4

1 に答える 1

4

delete()評価するには、where句を渡す必要があります。試す:

$where = $deleteModel->getAdapter()->quoteInto('id = ?', $dpostid);
$deleteModel->delete($where);

'id'を主キーに変更します。

また@parent::__construct($options);、あなたのフォームクラスでは少し奇妙です。これをに変更しparent::__construct();ます。エラーを生成しない場合は、エラーを抑制する必要はありません。

于 2012-08-07T19:16:57.070 に答える