我正在尝试在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');