【问题标题】:Symfony2 Confirmation when going to urlSymfony2 去 url 时的确认
【发布时间】:2015-01-12 12:44:45
【问题描述】:

我正在开发某种“ChargeUserForActionBundle”。 因为用户需要知道他将被收取访问具体 URL 的费用,所以我需要创建某种“确认页面”。 整体流程应该是这样的:

  • 从操作 A 转到操作 B。
  • 暂停执行操作 B。
  • 在事件监听器中请求确认。如果用户不同意 - 停止执行操作 B。否则:
  • 继续操作 B

我怎样才能实现这样的目标?

编辑:

public function paidLinkAction(){
    //Call event which trigger charging fee procedure. Inside this event we will inform user that he will be charged
    $this->get('yasecure_billing.app.charging')->callChargeEvent($user, 'Example action');
    /*
     * if user agree, come back here, and do rest of stuff
     */
}

我应该实施什么来让我的听众在要求确认后回到paidLinkAction?以及如何告诉paidLinkAction 用户已经付费? 当然实现应该是h4x-proof。我们不能有用户可以欺骗他已经被收费的应用程序的情况(所以cookies是个坏主意)。我在考虑会话?

【问题讨论】:

  • 最简单的方法是使用 javascript。创建一个对话框弹出,要求确认,在肯定的情况下,通过JS提交表单B。
  • 我想过这个,但我需要让它“可扩展”——可以有很多链接,而且要记住在每个链接中都包含 JS 会很糟糕。最后,我可以创建 twig 函数来使用此脚本呈现链接。但我想避免这种情况。
  • 它不会很人性化!但是您可以使用具有内核依赖项的服务:symfony.com/doc/current/book/service_container.htmlsymfony.com/doc/current/cookbook/service_container/…
  • Javascript 绝对不是要走的路。用户可以稍后再回来并要求退款,声称他禁用了 javascript。
  • 我的解决方案不是关于 Javascript,而是关于服务和内核(来自 Symfony);)

标签: php symfony events controller routing


【解决方案1】:

您可以使用我们制作的捆绑包,甚至可以从中激发灵感。 它被称为AvAlertifyBundle,它允许您管理任何类型的警报(成功、信息、警告以及您感兴趣的内容......确认模式)。

您可以获取有关确认模式here 的更多信息,也可以转到基础文档here

换句话说,你只需要添加这样的东西:

<a href="/your_url" class="btn btn-mini btn-danger confirm" data-title="Are you sure ?" data-body="You'll have to pay something ! Do you understand ?" data-cancel-button-class="cancel" data-confirm-button-class="danger">
    Pay actions
</a>

祝你好运。

【讨论】:

  • 不错的捆绑包。我想我将来会使用它,但不会在这个问题上 :( 使用任何 JS 解决方案都太冒险了。
猜你喜欢
  • 2015-12-24
  • 1970-01-01
  • 2019-07-25
  • 2012-03-16
  • 2021-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多