【问题标题】:Passing a regular parameter through the generateUrl function in Symfony2通过 Symfony2 中的 generateUrl 函数传递一个常规参数
【发布时间】:2015-01-26 19:23:05
【问题描述】:

我正在通过 createAction 重定向到 entity_show 路由。在创建逻辑中,我将一个非实体变量($credited)分配给“credited”或“not 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 中我可以将 $credited 返回到 twig 视图,在那里我可以使用一些 twig 逻辑来显示自定义文本,具体取决于 $credited 持有的值.

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

【问题讨论】:

    标签: symfony url redirect parameter-passing


    【解决方案1】:

    这是简单的数组内容:

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

    我当然假设 entity_show 路由已定义 id 和 credited。

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

    尝试: echo generateUrl('entity_show', array( 'id' => $entity->getId(), '贷记' => $贷记 ));死();

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

    【讨论】:

    • 对不起,我尽力解释了这一点,我试过这个方法,但是 $credited 没有被传递到 showAction,因为它总是假设它的默认值,即使我正在传递通过你建议的这个逻辑,$credited 是一个不同于 showAction 中分配的默认值的值。
    • 感谢您的建议。我决定采用不同的策略,添加一个数据库字段,因为我意识到无论如何我都需要使用一些与该主题无关的逻辑来更新它。尽管如此,我还是继续回应你的要求。 /symfony2/web/app_dev.php/myentity/4308?credited=not+credited 是输出。我只是想将 $credited 传递给 showAction 函数,我不在乎它是如何到达那里的,但我需要使用 generateUrl 来做到这一点。但现在不行了,我将使用 Doctrine 和 flashbag。感谢您的帮助。
    • 好的。然而,假设 /myentity 被映射到 showAction 那么你的 $credited 变量将被设置。如果你认为不是,那么你应该检查你为什么这么认为。您可能不了解 Symfony 2 的重定向功能。
    • 路由是/{id},方法是GET。您已经看到了我的返回值(来自 createAction)以及我试图在 showAction 中采用的参数。您已经看到生成的重定向 URL(转到 /{id} 并添加了 GET 属性 ?credited=not+credited。这一切对我来说似乎都合乎情理,但是 createAction 中的 $credited 值“未记入”是 没有被传递给 showAction,因此 showAction 将 $credited 分配为其默认值“credited”。这当然可能我可能不明白,这就是我问这个问题的原因。
    • 你实际上是在重定向?你的 createAction 有一个“return $this>redirect...”
    猜你喜欢
    • 2014-05-05
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    • 1970-01-01
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多