我正在尝试按照此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
占位符,但这是在路由器中命名的正则表达式吗?
答案 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');