zend framework 2操作中带有javascript的警报框
我有一个deleteAction()来删除项目中的类别。但只有在类别中没有非类别和产品时,才可以删除类别。这一切都有效。我的问题是如何在IndexController.php的deleteAction()中创建警报框 在这种观点下,我称之为行动:zend framework 2操作中带有javascript的警报框,javascript,php,zend-framework2,Javascript,Php,Zend Framework2,我有一个deleteAction()来删除项目中的类别。但只有在类别中没有非类别和产品时,才可以删除类别。这一切都有效。我的问题是如何在IndexController.php的deleteAction()中创建警报框 在这种观点下,我称之为行动: ... <a href="<?php echo $this->url('application/default', array('action'=>'delete','id' => $child->getId())
...
<a href="<?php echo $this->url('application/default', array('action'=>'delete','id' => $child->getId()));?>">Löschen</a>
...
。。。
...
这是我的deleteAction():
公共函数deleteAction()
{
$id=(int)$this->params()->fromRoute('id',0);
如果(!$id){
返回$this->redirect()->toRoute('home');
}
$em=$this->getEntityManager();
$category=$em->getRepository('Application\Entity\category')->find($id);
$parentId=$category->getParent()[0]->getId();
如果(计数($category->getCategoryId())==0&&count($category->getProductId())==0)
{
$em->remove($category);
$em->flush();
}
其他的
{
回声';
echo“警报(“您不能删除此类别!”);
回声';
//模具();
}
返回$this->redirect()->toRoute('application/default',array('action'=>'details','id'=>$parentId));
}
警报框工作,因为当die()时代码>位于“我可以使用警报框的代码”中。没有die()代码>该操作将删除警报框
现在有人知道如何使盒子可见了吗
谢谢。您在处理功能时大错特错
您的deleteAction()
首先应该了解这两种类型的请求,一种是来自未启用JavaScript的普通人的请求,另一种是来自启用JS并因此执行“AJAX请求”的人的请求。为此,您可以使用ZF2sControllerPlugin
,它被调用
然后,控制器根据所处的上下文(普通/ajax请求)执行不同的操作
如果是正常请求:
- 做所有的检查
- 如果成功,请删除条目并将用户重定向到概览页面
- 可能使用-Plugin添加一条成功消息
如果是“AJAX请求”:
- 所有的检查都正常吗
- 如果成功,则删除条目并返回一个
JsonModel
,它只返回success:true
- 如果未成功返回一个
JsonModel
,它只返回success:false
- 此外,在
false
上,还应返回类似的消息:“不可能,因为…”
在您的视图中,您只需呈现一个您所知道的普通链接,并按照您现在所做的操作执行ajax请求。根据请求的返回值,您知道请求是否成功。如果没有,您可以在视图(!)中从JS中抛出一个alertbox,说明事情不起作用的原因。您在处理功能时大错特错
您的deleteAction()
首先应该了解这两种类型的请求,一种是来自未启用JavaScript的普通人的请求,另一种是来自启用JS并因此执行“AJAX请求”的人的请求。为此,您可以使用ZF2sControllerPlugin
,它被调用
然后,控制器根据所处的上下文(普通/ajax请求)执行不同的操作
如果是正常请求:
- 做所有的检查
- 如果成功,请删除条目并将用户重定向到概览页面
- 可能使用-Plugin添加一条成功消息
如果是“AJAX请求”:
- 所有的检查都正常吗
- 如果成功,则删除条目并返回一个
JsonModel
,它只返回success:true
- 如果未成功返回一个
JsonModel
,它只返回success:false
- 此外,在
false
上,还应返回类似的消息:“不可能,因为…”
在您的视图中,您只需呈现一个您所知道的普通链接,并按照您现在所做的操作执行ajax请求。根据请求的返回值,您知道请求是否成功。如果没有,您可以在视图(!)中从JS中抛出一个alertbox,说明事情不起作用的原因
public function deleteAction()
{
$id = (int) $this->params()->fromRoute('id', 0);
if (!$id) {
return $this->redirect()->toRoute('home');
}
$em = $this->getEntityManager();
$category = $em->getRepository('Application\Entity\Category')->find($id);
$parentId = $category->getParent()[0]->getId();
if(count($category->getCategoryId()) == 0 && count($category->getProductId()) == 0)
{
$em->remove($category);
$em->flush();
}
else
{
echo '<script language="javascript">';
echo 'alert("You can't delete this category!")';
echo '</script>';
//die();
}
return $this->redirect()->toRoute('application/default',array('action'=>'details','id'=> $parentId));
}