即使启用了 prettyurl,我如何在 Yii2 中获得额外的 $_GET 参数?
我需要阅读来自重定向 Paypal-Link 的一些反馈,但我无法更改 Paypal-Side 上的链接格式以适应我的 Yii2 实现:
http://example.com/controller/action?success=boolean&token=xyz
谢谢你的帮助!
即使启用了 prettyurl,我如何在 Yii2 中获得额外的 $_GET 参数?
我需要阅读来自重定向 Paypal-Link 的一些反馈,但我无法更改 Paypal-Side 上的链接格式以适应我的 Yii2 实现:
http://example.com/controller/action?success=boolean&token=xyz
谢谢你的帮助!
你可以使用它
http://www.yiiframework.com/doc-2.0/guide-runtime-requests.html
例如
如果您需要使用$_GET['success']或$_GET['token']
你必须使用它:
$request = Yii::$app->request;
$get = $request->get();
$success = $request->get('success');
$token= $request->get('token');
使用请求类。
http://www.yiiframework.com/doc-2.0/yii-web-request.html
print_r(Yii::$app->request->get());
返回数组中的所有 get 变量。这就像print_r($_GET);
在直接 php 中做的那样。
如果你想要一个特定的 $_GET 变量,你可以按如下方式访问它:
Yii::$app->request->get('varName');
在您的情况下,它将是:
$success = Yii::$app->request->get('success');
$token = Yii::$app->request->get('token');
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',
我想出了一个办法:
$url = parse_url(Yii::$app->request->url);
parse_str($url['query'], $array);
$success = $array['success'];
$token = $array['token'];
但它似乎仍然不是正确的 Yii2 方式来解决它。
这是我从 paypal 成功的 returnUrl,yii2 在 UrlManager 中启用了 prettyurl,可以很好地处理它。
http://multi2.myhost/subscription/subscription/success?token=EC-8GE539098H175763M
我创建了一个订阅模块和一个名为 SubscriptionController 的控制器类以及名为 actionSuccess 和 actionCancel 的操作。
Paypal 重定向只传递一个参数。令牌。不需要两个参数。您的成功和取消 returnurl 应该是这样的:
控制器/动作或订阅/成功/
控制器/动作或订阅/取消/
你的成功returnUrl:
订阅控制器/actionSuccess($token)
public actionSuccess($token)
{
}
和你的取消returnUrl:
订阅控制器/actionCancel($token)
public actionCancel($token)
{
}
使用这种方法不需要第二个参数来处理成功和取消变量,因为单独的控制器动作解决了这个问题。在满足 PrettyUrl Management 的操作名称中加入“成功”。
您必须在以下代码中修改商家偏好 returnUrls。
$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');
在动作开始时。