Zend framework Zend框架中的确认对话框
我正在构建一个Zend应用程序,使用条令存储库类来更新、删除数据并将数据插入数据库。这些存储库是从控制器操作调用的,它们完全按照它们应该执行的操作。但是,我想在应用程序中添加一些确认对话框,例如,如果用户想要编辑或删除项目,则必须首先打开确认编辑或删除对话框,然后根据用户选择的内容编辑或删除数据。下面是一些操作代码的示例,用于在用户单击zend form submit按钮后更新员工详细信息Zend framework Zend框架中的确认对话框,zend-framework,dialog,confirmation,Zend Framework,Dialog,Confirmation,我正在构建一个Zend应用程序,使用条令存储库类来更新、删除数据并将数据插入数据库。这些存储库是从控制器操作调用的,它们完全按照它们应该执行的操作。但是,我想在应用程序中添加一些确认对话框,例如,如果用户想要编辑或删除项目,则必须首先打开确认编辑或删除对话框,然后根据用户选择的内容编辑或删除数据。下面是一些操作代码的示例,用于在用户单击zend form submit按钮后更新员工详细信息 public function updatestaffAction() { if
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();
}
}
staff repository saveStaff方法只是创建一个新的staff对象,如果该人员不存在,则将该对象持久化;如果该人员是现有人员,则合并新数据,如上面的更新代码所示
因此,我的问题是,如何更改操作以仅在用户单击确认对话框中的“是”按钮后保存数据。顺便说一句,该对话框可以是JQuery或Dojo对话框。创建表单的提交按钮时,设置js代码:
$submit = new Zend_Form_Element_Submit('delete');
$submit->setAttrib(
'onclick',
'if (confirm("Are you sure?")) { document.form.submit(); } return false;'
);
或者,如果您想在链接上设置dialogbox(如果您没有提交表单):
showDialog的代码:
$(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" );
}
}
});
});`
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>
它成功了:)执行JQuery对话框确认,并使用Ajax
post
调用controller junction,谢谢,但我真的不确定该怎么做。我的控制器操作还创建了一个zend表单,该表单使用viewscript装饰器模式显示。当用户单击表单提交按钮时,执行上述代码。我应该不使用submit按钮,而是使用一个调用对话框事件的普通按钮吗?如果是这样,我该如何调用控制器操作并提交表单数据?您好,谢谢您,我已经了解了这一点,但是我实际上希望使用自定义jquery或dojo对话框来代替它。我可以向submit按钮添加onclick属性,甚至向调用显示对话框窗口的showDialog函数的表单添加onsubmit属性,但我不知道如何从该对话框窗口获取结果。任何帮助都将不胜感激。谢谢
<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>