通过Symfony2中的generateUrl函数传递常规参数

时间:2015-01-26 19:23:05

标签: symfony url redirect parameter-passing

我通过createAction重定向到entity_show路由。在创建逻辑中,我将一个非实体变量($ credited)分配给'贷记'或者'没有记入',然后我试图通过

的回复传递给showAction(entity_show路线)
this->redirect(generateUrl(entity_show, array('id' => $entity->getId(), $credited)));

我已经尝试过这几种方式,

array(..., $credited)
array(..., 'credited' => $credited)
array(..., true/false)

但是这些值都没有被正确传递到showAction中,即使我已经定义了参数。

public function showAction($id, $credited = 'credited') { ... }

(如果我从createAction以外的地方调用showAction,我需要默认值,其中$ credited是未定义的)

问题是在showAction中,$ credited总是回落到默认值,即使在createAction中传递的值也没有记入',这意味着参数根本没有传递给showAction我打算这样做。

是否可以通过generateUrl()作为普通函数参数传递变量,而不是与URL本身绑定的内容?

理想情况下,如果我可以将我的$ credited值从createAction传递到showAction,那么在showAction中我可以返回$ credig到twig视图,在那里我可以使用一些树枝逻辑来显示自定义文本,具体取决于$ credited持有的值

return array(
    'entity'      => $entity,
    'credited'    => $credited,
    'delete_form' => $deleteForm->createView()
);

1 个答案:

答案 0 :(得分:1)

这是简单的数组:

this->redirect(generateUrl('entity_show', array(
    'id' => $entity->getId(), 
    'credited' => $credited
)));

我当然假设entity_show路由已经定义了id和贷记。

针对第一条评论进行了更新。

尝试:     echo generateUrl('entity_show',array(         'id'=> $实体 - >的getId(),         'credited'=> $记     ));模具();

我怀疑你的entity_show路线没有正确定义。考虑使用路由定义以及上述测试的结果更新您的问题。实际上,您的浏览器也应该显示重定向的URL。