1

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

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

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

谢谢你的帮助!

4

5 回答 5

1

你可以使用它

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');
于 2017-06-15T09:12:58.920 回答
0

使用请求类。

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');
于 2015-03-19T23:25:34.403 回答
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',
于 2015-03-03T09:14:42.090 回答
0

我想出了一个办法:

$url = parse_url(Yii::$app->request->url);

parse_str($url['query'], $array);

$success = $array['success'];
$token = $array['token'];

但它似乎仍然不是正确的 Yii2 方式来解决它。

于 2015-03-03T08:57:05.087 回答
0

这是我从 paypal 成功的 returnUrl,yii2 在 UrlManager 中启用了 prettyurl,可以很好地处理它。

http://multi2.myhost/subscription/subscription/success?token=EC-8GE5390​​98H175763M

我创建了一个订阅模块和一个名为 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');

在动作开始时。

于 2019-10-06T20:24:56.223 回答