为什么我的方法是通过将鼠标悬停在其链接上而触发的?

问题描述 投票:0回答:1

我已经挠头有一段时间了。我注意到我的一些实体无缘无故地消失了。经过调查,我发现当我将鼠标悬停在链接上时,分析器中会记录一些获取请求。如果这些链接与删除方法绑定,它们就会被触发,刷新后,相关实体就会消失。

这是我的deleteResource()方法的代码:

// Deletes a resource

#[Route('/resource/{id}/delete', name: 'app_resource_delete')]
public function deleteResource(Resource $resource, EntityManagerInterface $em): Response
{

    if(!$this->getUser()) {
        return $this->redirectToRoute('app_login');
    }

    if ($resource->getAuthor() !== $this->getUser() || !in_array('ROLE_MODERATOR', $this->getUser()->getRoles())){
        return $this->redirectToRoute('app_home');
    }

    $em->remove($resource);
    $em->flush();

    return $this->redirectToRoute('app_resource');
}

这是我的链接的示例:

<a class="px-4 py-2 bg-tertiary text-white rounded-lg hover:scale-105 hover:bg-red-600 duration-150 ml-2" href="{{path ('app_ressource_delete', {'id' : ressource.id} )}}">Delete ressource </a>

我希望仅当用户单击相应的删除链接时才会发生删除。但是,我注意到只需将鼠标悬停在某些链接上即可触发请求,从而导致分析器中出现 500 个错误。当我刷新页面时,我发现删除已经成功了。

我怀疑问题在于我的链接在 Twig 模板中的呈现方式,但我不确定解决此问题的最佳方法。将鼠标悬停在 Symfony 应用程序中的删除链接上时,如何防止发生这些意外请求?

任何帮助或建议将不胜感激。预先感谢!

老实说,我什至不知道要尝试什么,转储不会在刷新时触发,所以这是不,删除悬停效果也不会执行任何操作,向链接添加确认参数并不会阻止删除,当我在它上面悬停了很多次,这就是我的分析器的样子: 我的分析器的屏幕截图

为了进行比较,这是我将鼠标悬停在未绑定到方法的其他链接上时的分析器: 其他截图进行比较

php symfony
1个回答
0
投票

我遇到了同样的问题,正如评论中所述,它源于在所有链接上启用预取。造成这种情况的原因不是 Symfony 或 symfony/ux-turbo,而是 Turbo,从 v8 开始默认启用了预取。正如评论中所述,可以通过放置在文档的头部来关闭此功能。

© www.soinside.com 2019 - 2024. All rights reserved.