【发布时间】: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