1

我正在使用理论存储库类构建 Zend 应用程序来更新、删除和插入数据到数据库。这些存储库是从控制器操作中调用的,它们完全按照它们应该做的事情做。但是,我想在应用程序中添加一些确认对话框,例如,如果用户想要编辑或删除一个项目,则必须首先打开一个确认编辑或删除对话框,数据将被编辑或删除,具体取决于用户选择什么。这是用户单击 zend 表单提交按钮后更新员工详细信息的一些操作代码示例。

public function updatestaffAction()
{        
    if ($this->getRequest()->isPost()) {
        if ($form->isValid($this->getRequest()->getPost())) {
            $values = $form->getValues();
            $user = $this->entityManager->find('\PTS\Entity\Staff', $values['staff_number']);
            $staffValues = array('staff_number' =>  $values['staff_number'],
                                 'title'        =>  $values['title'],
                                 'first_name'   =>  $values['first_name'],
                                 'last_name'    =>  $values['last_name'],
                                 'telephone'    =>  $values['telephone'],
                                 'cellphone'    =>  $values['cellphone'],
                                 'fax'          =>  $values['fax'],
                                 'email'        =>  $values['email'],
                                 'job_title'    =>  $values['job_title']);

            $this->staffRepository->saveStaff($staffValues);
            $this->entityManager->flush();
        }
    }

员工存储库 saveStaff 方法只是创建一个新的员工对象并在员工不存在时保持该对象,或者如果它是现有员工则合并新数据,就像上面更新代码的情况一样。

所以我的问题是,如何更改操作以仅在用户单击确认对话框中的“是”按钮后才保存数据。顺便说一句,对话框可以是 JQuery 或 Dojo 对话框。

4

2 回答 2

2

创建表单的提交按钮时,设置js代码:

$submit = new Zend_Form_Element_Submit('delete');

$submit->setAttrib(
'onclick', 
'if (confirm("Are you sure?")) { document.form.submit(); } return false;'
);

或者,如果您想在链接上设置对话框(如果您没有提交表单):

onclick="if (confirm('Are you sure?')) { document.location = this.href; } return false;"

显示对话框的代码:

$(function() {
    $( "#dialog:ui-dialog" ).dialog( "destroy" );

    $( "#dialog-confirm" ).dialog({
        resizable: false,
        height:140,
        modal: true,
        buttons: {
            "Are you sure": function() {
                                    // PUT your code for OK button, for eg.
                                    document.form.submit();
                $( this ).dialog( "close" );
            },
            Cancel: function() {
                $( this ).dialog( "close" );
            }
        }
    });
});`
于 2012-09-03T12:47:27.667 回答
0

Thx,我这样使用第二个选项:

<a href="<?=$this->url('skill', array('action'=>'delete', 'id' => $skill->getId()))?>" onclick="if (confirm('Are you sure?')) { document.location = this.href; } return false;">Delete</a>

它的工作:)

于 2013-07-31T14:22:26.863 回答