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 documentation 中看到你不能在任何地方使用 /: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');
我正在尝试在 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 documentation 中看到你不能在任何地方使用 /: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');