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


Routing in Phalcon - parameter before the end of the route

我正在尝试在Phalcon中设置路由,以下URL结构:

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文档中,你不能在任何地方使用/:params占位符,但在路由(URL)的末尾,但这是一个正则表达式被命名在路由器?

你是对的,你只是忘记了[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');