2

我正在尝试按照以下 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 文档中看到,除了在路由(URL)的末尾,您不能在/:params任何地方使用占位符,但这是在路由器中命名的正则表达式?

4

1 回答 1

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');
于 2016-06-30T10:00:09.613 回答