在Phalcon中路由 - 在路由结束之前的参数

时间:2016-06-30 09:26:29

标签: php phalcon phalcon-routing

我正在尝试按照此URL结构在Phalcon中设置路由:

  

www.example.com/language/register /

这是我的routes.php

use Phalcon\Mvc\Router;

$router = new Router();

$router->add(
    '/[a-z]{2}/register/',
    array(
        'controller' => 'index',
        'action' => 'register',
        'lang' => 1
    )
);

return $router;

这是我的IndexController:

class IndexController extends ControllerBase
{
    public $lang;

    public function indexAction()
    {

    }

    public function registerAction($lang)
    {
        $lang = $this->dispatcher->getParam('lang');
        echo "Register ($lang)"; //test
    }

}

因此,如果我要访问www.example.com/fr/register/,我会转到index控制器,register操作,并使用lang参数fr

但是,它没有在页面上显示$lang变量。

我可以在Phalcon documentation中看到你不能在路由末尾(URL)的任何地方使用/:params占位符,但这是在路由器中命名的正则表达式吗?

1 个答案:

答案 0 :(得分:3)

你做得对,你忘记了[a-z]{2}

周围的括号
$router->add(
    '/([a-z]{2})/register/', // added brackets here
    array(
        'controller' => 'index',
        'action' => 'register',
        'lang' => 1
    )
);

现在您可以通过

访问lang
$lang = $this->dispatcher->getParam('lang');