即使启用了prettyurl,如何在Yii2中获得额外的$ _GET参数?
我需要阅读来自重定向Paypal-Link的一些反馈,但我无法更改Paypal-Side上的链接格式以适合我的Yii2实现:
http://example.com/controller/action?success=boolean&token=xyz
感谢您的帮助!
答案 0 :(得分:1)
你可以使用它
http://www.yiiframework.com/doc-2.0/guide-runtime-requests.html
例如
如果您需要使用 $ _ GET ['成功'] 或 $ _ GET ['令牌']
你必须使用它:
$request = Yii::$app->request;
$get = $request->get();
$success = $request->get('success');
$token= $request->get('token');
答案 1 :(得分:0)
我想出了办法:
$url = parse_url(Yii::$app->request->url);
parse_str($url['query'], $array);
$success = $array['success'];
$token = $array['token'];
但它似乎仍然不是正确的Yii2-ish解决方法。
答案 2 :(得分:0)
http://www.yiiframework.com/doc-2.0/yii-web-urlmanager.html这对你有帮助。您可以为任何控制器指定GET POST方法,
[
'dashboard' => 'site/index',
'POST <controller:\w+>s' => '<controller>/create',
'<controller:\w+>s' => '<controller>/index',
'PUT <controller:\w+>/<id:\d+>' => '<controller>/update',
'DELETE <controller:\w+>/<id:\d+>' => '<controller>/delete',
'<controller:\w+>/<id:\d+>' => '<controller>/view',];
例如
'POST <controller:\w+>/<success:\w+>/<token:\w+>' => '<controller>/update',
答案 3 :(得分:0)
使用Request类。
http://www.yiiframework.com/doc-2.0/yii-web-request.html
print_r(Yii::$app->request->get());
返回数组中的所有get变量。这就像在直接php中做print_r($_GET);
一样。
如果你想要一个特定的$ _GET变量,你可以按如下方式访问它:
Yii::$app->request->get('varName');
在你的情况下,它将是:
$success = Yii::$app->request->get('success');
$token = Yii::$app->request->get('token');
答案 4 :(得分:0)
这是我从paypal成功获得的returnUrl,yii2在UrlManager中启用了prettyurl,可以很好地处理它。
http://multi2.myhost/subscription/subscription/success?token=EC-8GE539098H175763M
我创建了一个预订模块和一个名为SubscriptionController的控制器类,以及名为actionSuccess和actionCancel的操作。
贝宝重定向仅传递一个参数。令牌。不需要两个参数。您的成功和取消returnurl应该类似于:
控制器/操作或订阅/成功/
控制器/操作或订阅/取消/
您的成功returnUrl:
SubscriptionController / actionSuccess($ token)
public actionSuccess($token)
{
}
和您的取消returnUrl:
SubscriptionController / actionCancel($ token)
public actionCancel($token)
{
}
使用此方法,不需要第二个参数来处理成功和取消变量,因为单独的Controller Actions解决了此问题。在满足PrettyUrl Management的操作名称中添加“成功”。
您将必须在以下代码中同时修改两个商家首选项returnUrl。
$merchantPreferences = new MerchantPreferences();
$merchantPreferences->setReturnUrl($model->merchant_preference_returnurl)
->setCancelUrl($model->merchant_preference_cancelurl)
因此不需要:
$request = Yii::$app->request;
$get = $request->get();
$token = $request->get('token');
在操作开始时。