如果启用prettyurl,如何在Yii2中获得额外的$ _GET参数?

时间:2015-03-03 08:37:23

标签: php paypal yii-url-manager

即使启用了prettyurl,如何在Yii2中获得额外的$ _GET参数?

我需要阅读来自重定向Paypal-Link的一些反馈,但我无法更改Paypal-Side上的链接格式以适合我的Yii2实现:

http://example.com/controller/action?success=boolean&token=xyz

感谢您的帮助!

5 个答案:

答案 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');

在操作开始时。