Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
zend framework 2操作中带有javascript的警报框_Javascript_Php_Zend Framework2 - Fatal编程技术网

zend framework 2操作中带有javascript的警报框

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())

我有一个deleteAction()来删除项目中的类别。但只有在类别中没有非类别和产品时,才可以删除类别。这一切都有效。我的问题是如何在IndexController.php的deleteAction()中创建警报框

在这种观点下,我称之为行动:

...

<a href="<?php echo $this->url('application/default', array('action'=>'delete','id' => $child->getId()));?>">L&oumlschen</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请求”的人的请求。为此,您可以使用ZF2s
ControllerPlugin
,它被调用

然后,控制器根据所处的上下文(普通/ajax请求)执行不同的操作

如果是正常请求:

  • 做所有的检查
  • 如果成功,请删除条目并将用户重定向到概览页面
  • 可能使用-Plugin添加一条成功消息
如果是“AJAX请求”:

  • 所有的检查都正常吗
  • 如果成功,则删除条目并返回一个
    JsonModel
    ,它只返回
    success:true
  • 如果未成功返回一个
    JsonModel
    ,它只返回
    success:false
  • 此外,在
    false
    上,还应返回类似
    的消息:“不可能,因为…”

在您的视图中,您只需呈现一个您所知道的普通链接,并按照您现在所做的操作执行ajax请求。根据请求的返回值,您知道请求是否成功。如果没有,您可以在视图(!)中从JS中抛出一个alertbox,说明事情不起作用的原因。

您在处理功能时大错特错

您的
deleteAction()
首先应该了解这两种类型的请求,一种是来自未启用JavaScript的普通人的请求,另一种是来自启用JS并因此执行“AJAX请求”的人的请求。为此,您可以使用ZF2s
ControllerPlugin
,它被调用

然后,控制器根据所处的上下文(普通/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));
    }