2

使用参数化路由时,有没有办法$_GET在我的事件处理程序中访问重写的变量?onBeginRequest

我的路线定义为:

'<_c:\w+>/<_a:\w+>/<id:\d+>' => '<_c>/<_a>'

我的事件处理程序是:

'onBeginRequest' => function($event) {
    /*
    site.com/posts/edit/1 - empty (bad)
    site.com/posts/edit/?id=1 - not empty(good)         
    */
    var_dump($_GET);
    die;
}

无论请求上述两个 URL 中的哪一个,如何确保定义了 $_GET['id']?

我正在使用 Yii 1.1.13 版。

4

1 回答 1

3

您可以通过让 url 管理器组件解析当前请求 url 来做到这一点:

$app = Yii::app();
$app->getUrlManager()->parseUrl($app->getRequest());

这将根据您的路线适当地$_GET填充。$_REQUEST它还将返回活动路由(控制器/动作对),但我没有对返回值做任何事情,因为看起来你在这里不需要它。

于 2013-07-24T11:19:49.337 回答