gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 15:45:56 25 4
gpt4 key购买 nike

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

在此 View 中,我将操作称为:

...

<a href="<?php echo $this->url('application/default', array('action'=>'delete','id' => $child->getId()));?>">L&oumlschen</a>

...

这是我的deleteAction():

 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));
}

警报框有效,因为当 die(); 位于代码中时我可以看到警报框。如果没有 die();,该操作会模糊警报框。

现在有人知道如何使该框可见吗?

谢谢。

最佳答案

你对你的功能的理解是非常错误的。

您的 deleteAction() 应该首先了解两种类型的请求,即来自未启用 JavaScript 的普通人的请求,以及来自启用 JS 的人的请求,因此执行“AJAX 请求”。为此,您可以使用 ZF2s ControllerPlugin ,其名称为 acceptableViewModelSelector() .

然后,您的 Controller 会根据您所处的上下文(正常/ajax 请求)执行不同的操作。

如果是普通请求:

  • 完成所有检查
  • 如果成功,则删除该条目并将用户重定向到概述页面
  • 可以使用 flashMessenger() 添加成功消息-插件

如果是“AJAX 请求”:

  • 正常进行所有检查
  • 如果成功,则删除条目并返回一个 JsonModel,该 JsonModel 仅返回 success:true
  • 如果不成功返回一个JsonModel,它只返回success:false
  • 此外,在 false 上,您还应该返回类似 message:'not possiblebecause.....'

在你的 View 中,你只需渲染一个你知道的普通链接,并像你现在正在做的那样执行你的ajax请求。根据请求的返回值,您可以知道它是否成功。如果没有,你可以从 View 中的 JS 中抛出一个警报框(!),说明事情不起作用的原因。

关于javascript - zend Framework 2 操作中带有 javascript 的警报框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22303042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com