我需要为应用程序进行支付交易,并且我看到了 JSMPaymentCoreBundle。
我阅读了 JSMPaymentCoreBundel 的文档但我想知道如何将对象传递给 Controller detailsAction(Order $order) 和completeAction(Order $order)。
例如,在detailAction Controller 中,重定向响应如下所示:
return new RedirectResponse($this->router->generate('payment_complete', array('orderNumber' => $order->getOrderNumber(),)));
对我来说,我们不会将参数中所需的 Order 对象传递给下面的completeAction Controller ,而只传递 orderNumer:
/**
* @Route("/{orderNumber}/complete", name = "payment_complete")
*/
public function completeAction(Order $order){
...
}
我认为如果我不传递 Order 对象,我会收到错误。那么最好的方法是什么以及如何做到这一点?
开发和 Symfony 的新手,我真的很想理解,而不是简单地复制/粘贴。
如有任何帮助,我们将不胜感激。
最佳答案
您可以使用@ParamConverter注释将orderNumber转换为其实体
http://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/annotations/converters.html
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
...
/**
* @Route("/{orderNumber}/complete", name = "payment_complete")
* @ParamConverter("order", options={"mapping": {"orderNumber": "orderNumber"}})
*/
public function completeAction(Order $order){
...
}
更新: 再次阅读你的问题,有点困惑。那么,您在获取 $order 时是否遇到问题(错误),或者您只是困惑为什么传递 OrderNumber,但获取 Order 实体?
如果是这样,请忽略我的第一个示例,其作用与所示相同:
/**
* @Route("/{orderNumber}/details", name = "payment_details")
* @Template
*/
public function detailsAction(Order $order)
这意味着 ParameterConverter 会为你施展魔法,将传递的 orderNumber 转换为实体 Order,这实际上是 Symfony 文档推荐的“最佳实践”方法:http://symfony.com/doc/2.3/best_practices/controllers.html#using-the-paramconverter
并且您不需要为这种情况添加额外的注释
关于symfony - 如何使用 JMS payementCoreBundle 将 Order 对象传递给detailsAction 和 CompleteAction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29846441/