我有以下路线:
register_invitecode:
url: /register/:invitecode
param: { module: home, action: register }
register:
url: /register
param: { module: home, action: register }
我想在部分 _form.php 中使用“invitecode”,但我无法获得$ _GET ['invitecode']。我使用了以下代码:
<?php echo $sf_request->getGetParameter('invitecode') ?>
它没有给我任何错误,但它也没有向我显示邀请码。
我该怎么办?
另外,有没有办法避免“注册”路由的双重声明? invitecode 应该是可选参数,不是强制性的。
答案 0 :(得分:2)
Get参数(sfWebRequest->getGetParameter()
)是HTTP GET操作的“物理”参数的参数。在HTTP GET中,所有参数都添加到查询字符串(?invitecode=abcd
)中。
如果要访问路由中的参数(例如您的情况),则必须使用sfWebRequest->getParameter()
。
答案 1 :(得分:2)
就register和register_invitecode而言,你可以使用1路径
register:
url: /register/:invitecode
param: { module: home, action: register }
使用邀请代码<?php echo url_for('register?invitecode=foobar'); ?>
生成包含<?php echo url_for('register'); ?>
获取模板中的变量try <?php echo $sf_request->get('invitecode'); ?>
$request->getParameter('invitecode')
中的
答案 2 :(得分:0)
如果您需要强制路线为GET,您可以将其添加到您的路线:
requirements:
sf_method: [get]