Phalcon:如何使用路由获取url中的参数

时间:2014-05-13 18:40:10

标签: routing phalcon

我想得到" q"网址的参数值如下:

http://api.domain.com/artist?callback=jQuery1710976531726308167_1400000891029&q=thanh&_=1400000895743

如何在Phalcon中使用路由?我试试这个但不匹配:

$app->get("/artist?callback={callback:(.*)}&q={q:(.*)}&_={_:(.*)}", function ($q) {
    //my logic code
}

$app->get("/artist?callback=jQuery1710976531726308167_1400000891029&q=thanh&_=1400000895743", function () {
    //my logic code
}

2 个答案:

答案 0 :(得分:1)

在Phalcon中,您使用Phalcon \ Http \ Request对象来检索查询字符串参数。如果您正在尝试为Phalcon的Micro Framework定义路线,您的路线应该如下定义:

$app->get("/artist", function () {
    $request = new Phalcon\Http\Request();
    $q = $request->get('q');
    echo $q;
});

您没有使用查询字符串参数定义路由。您的路线将根据网址中问号前面的部分与上述内容匹配。此外,将参数传递给处理get请求的匿名函数是针对URL模式中的REST参数。如:

$app->get("/artist/{name}", function ($name) {
    echo $name;
});

答案 1 :(得分:1)

你可以用两种方式做到这一点:

方式1 :使用获取参数

$this->request->get('artist');

方式2 :使用路由器

路由器中的

$router->add("/artist/id/([a-zA-Z0-9\_\-])", array( 'controller' => 'index', 'action' => 'artist', 'name' => 'abc' ));
控制器中的

$id = $this->dispatcher->getParam("name");

希望这会很好。