Symfony如何从动作中获取类注释路由参数

时间:2014-05-29 18:13:56

标签: symfony routing annotations

这里有问题:

/**
 * Deal controller.
 *
 * @Route("/portfolio/{portfolio_id}/deal")
 */
class DealController extends Controller
{
    // … some code here…

    /**
     * Creates a new Deal entity.
     *
     * @Route("/", name="mb_deal_create")
     * @Method("POST")
     * @Template("MBPortfolioBundle:Deal:new.html.twig")
     */
    public function createAction(Request $request)
    {
    }

所以这是我的问题:如何在此createAction中获取类注释中定义的$ portfolio_id路由参数?

如果我尝试将此参数添加到参数列表中,那么它将为null:

public function createAction(Request $request, $portfolio_id) // no way

如果我试图从查询参数包中获取它 - 那么它为null:

public function createAction(Request $request)
{
    $portfolio_id = $request->query->get('portfolio_id'); // no way

那么我需要做什么?

任何帮助表示感谢。

谢谢,祝你有愉快的一天!

3 个答案:

答案 0 :(得分:1)

修改

portfolio_id移至动作'注释

/**
 * Deal controller.
 *
 */
class DealController extends Controller
{

// … some code here…

/**
 * Creates a new Deal entity.
 *
 * @Route("/portfolio/{portfolio}/deal", name="mb_deal_create")
 * @Method("POST")
 * @Template("MBPortfolioBundle:Deal:new.html.twig")
 */
public function createAction(Request $request, Portfolio $portfolio)
{
}

答案 1 :(得分:1)

我的解决方案就在这里:

$portfolio_id = $request->attributes->get('_route_params')['portfolio_id'];

答案 2 :(得分:1)

我看到你已经找到了解决方案但是把它解决方案放在这里并没有什么坏处:

$context = new RequestContext();
$context->fromRequest($request);
$portfolio_id = $context->getParameter('portfolio_id');