1

statestate_id、という名前のテーブルがありますstate_name。現在、新しい状態を追加して編集することはできますが、状態を削除することはできません。コードのどこが間違っている可能性がありますか?

{title:"Actions",template:'<a class="left" onclick="javascript:openEditStatePopup(this);">Edit</a>' + 
    '<a class="right" onclick="javascript:deleteState(this);">Delete</a>'
    ,width:120,sortable:false}

このスニペットはビュー コードです。リンクをクリックすると、次の JavaScript が実行されます。

function deleteState(element)
{
    var countryDetail = {};
    var GriddataItem = $("#state_grid").data("kendoGrid").dataItem($(element).closest("tr"));
    countryDetail.state_id =GriddataItem.state_id;
    countryDetail.state_name = GriddataItem.state_name;
    // alert(countryDetail.state_id);
    $.ajax({
        url:"<?= $this->baseUrl('admin/state/delete')?>",
        data: {state_id :  countryDetail.state_id},
        dataType: "json",
        type: "POST",
        success: function(){
            alert('success');
        },
        failure:function(){
            alert('not working');
        }
    });
}

alert(countryDetail.state_id)呼び出しの前にエコーする$.ajaxと、正しい状態 ID を取得できます。

私の削除コントローラーは次のとおりです。

public function deleteAction()
{

    $state = $this->_request->_getPost('state_id');
    $stateMapper = new Application_Model_Mapper_StateMapper();
    $stateMapper->delete($state);
}

削除用のモデル マッパーは次のとおりです。

public function delete(Application_Model_State $state)
{
    $data = $state->toArray();
    $adapter = $this->getDbTable()->getAdapter()->delete(array('state_id=?'=>$data['state_id']));
}
4

2 に答える 2

0

deleteActionこんにちは、次のように書く必要があります

public function deleteAction()
{


    $state = $this->_getParam('state_id');
    $stateMapper = new Application_Model_Mapper_StateMapper();
    $stateId = $stateMapper->delete($state);
    $this->_helper->json(array('success'=>1));
} 
于 2012-07-25T04:18:36.040 に答える
0

コントローラー アクションで、deleteAction()POST パラメータ 'state_id' を取得しています

$state = $this->_request->_getPost('state_id');
$stateMapper = new Application_Model_Mapper_StateMapper();
$stateMapper->delete($state);

そして、あなたはそれを関数で渡して$stateいます$stateMapper->delete($state);

モデルクラスの関数public function delete(Application_Model_State $state)定義では、状態モデルオブジェクトではなく状態IDを渡しているため、これを次のように変更する必要があります

public function delete($state_id)
{
    $adapter = $this->getDbTable()->getAdapter()->delete(array('state_id=?'=>$state_id));

}

その後、それは動作するはずです...

私が見たことのないもう一つのこと

failure:function(){
      alert('not working');
}

むしろそうです

error:function(){
    alert('not working');
}
于 2012-07-20T02:52:05.427 に答える