Ben*_*cas 13 symfony jmspaymentpaypalbundle
我需要为应用程序进行支付交易,我看到了JSMPaymentCoreBundle.
我阅读了JSMPaymentCoreBundel的文档,但我想知道如何将对象传递给控制器detailsAction(Order $ order)和completeAction(Order $ order).
例如,在detailAction控制器中,重定向响应如下所示:
return new RedirectResponse($this->router->generate('payment_complete', array('orderNumber' => $order->getOrderNumber(),)));
Run Code Online (Sandbox Code Playgroud)
对我来说,我们不会将参数中所需的Order对象传递给下面的completeAction控制器,但只传递orderNumer:
/**
* @Route("/{orderNumber}/complete", name = "payment_complete")
*/
public function completeAction(Order $order){
...
}
Run Code Online (Sandbox Code Playgroud)
我认为如果我不传递Order对象,我会收到错误.那么最好的方法是什么呢?
新的开发和Symfony,我真的想要理解而不是简单地复制/粘贴.
任何帮助将是欣赏.
你认为你会得到错误,但你真的得到了错误吗?
您阅读的文档JSMPaymentCoreBundel绝对正确。如果您在控制器操作中键入提示参数,则路由占位符将转换为相应的对象(如果找到)。请参阅 Evgeniy 发布的链接。你甚至不需要使用ParamConverter
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\BlogBundle\Entity\Post;
/**
* @Route("/blog/{id}")
*/
public function showAction(Post $post)
{
//your code here
}
Run Code Online (Sandbox Code Playgroud)
幕后发生了几件事:
转换器尝试从请求属性中获取 SensioBlogBundle:Post 对象(请求属性来自路由占位符——此处为 id);
如果没有找到Post对象,则生成404 Response;
如果找到 Post 对象,则会定义一个新的 post 请求属性(可通过 $request->attributes->get('post') 访问);
至于其他请求属性,当存在于方法签名中时,它会自动注入控制器中。
如果您像上面的示例一样使用类型提示,您甚至可以完全省略 @ParamConverter 注释:
| 归档时间: |
|
| 查看次数: |
181 次 |
| 最近记录: |