Frameworks zf2根url静态和动态
我目前正在使用静态路由,但我想知道您是否可以同时使用静态路由和动态路由。所以我用这个:Frameworks zf2根url静态和动态,frameworks,zend-framework2,url-routing,Frameworks,Zend Framework2,Url Routing,我目前正在使用静态路由,但我想知道您是否可以同时使用静态路由和动态路由。所以我用这个: 'contact' => array( 'type' => 'literal', 'options' => array( 'route' => '/contact', 'defaults' => array( 'controller' => 'App
'contact' => array(
'type' => 'literal',
'options' => array(
'route' => '/contact',
'defaults' => array(
'controller' => 'Application\Controller\IndexController',
'action' => 'contact',
),
),
),
我想用像这样的东西来搭配它
'contact' => array(
'type' => 'segment',
'options' => array(
'route' => '/:curated_url',
'defaults' => array(
'controller' => 'Application\Controller\IndexController',
'action' => 'curated',
),
),
),
动态路由将接受所有内容,并劫持静态路由。然后我开始考虑使用动作路由,但是curated\uurl
可以是任何东西
是否有任何方法可以使用动态的,并且有默认值,如果它不在那里,那么它会在数据库中查看它是否在那里
**********编辑**********
这就是我目前所做的,它是有效的,但我知道有更好的方法,我只是不知道更好的方法
router.config.php
'curated-url' => array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => '/:url',
'defaults' => array(
'controller' => 'Application\Controller\IndexController',
'action' => 'custom',
),
),
),
IndexController.php
/*
* Special kind of special
*/
public function customAction()
{
$params = array();
$type = $this->params('url');
if ('contact' == $type) {
$params = $this->contactAction($this->getRequest());
} else if ('discover' == $type) {
$params = $this->discoverAction();
} else if ('how-it-works' == $type) {
$params = $this->howItWorksAction();
} else if ('privacy-policy' == $type) {
$params = $this->privacyPolicyAction();
} else if ('questions' == $type) {
$params = $this->questionsAction();
} else if ('terms-of-use' == $type) {
$params = $this->termsOfUseAction();
} else if ('volunteer' == $type) {
$params = $this->volunteerAction();
} else {
$params = $this->curatedAction($type);
$type = 'curated';
}
$view = new ViewModel($params);
$view->setTemplate('application/index/' . $type);
return $view;
}
我不太确定这是否是您的意思,但我相信您需要指定约束键,让我演示如何:
'contact' => array(
'type' => 'segment',
'options' => array(
'route' => '/:curated_url',
'constraints' => array(
'curated_url' => '[a-zA-Z][a-zA-Z0-9_-]+',
),
'defaults' => array(
'controller' => 'Application\Controller\IndexController',
'action' => 'curated',
),
),
),
那么,如果你通过了类似于:
它将指向策划的行动。我不太确定这是否是您的意思,但我相信您需要指定约束键,让我演示如何:
'contact' => array(
'type' => 'segment',
'options' => array(
'route' => '/:curated_url',
'constraints' => array(
'curated_url' => '[a-zA-Z][a-zA-Z0-9_-]+',
),
'defaults' => array(
'controller' => 'Application\Controller\IndexController',
'action' => 'curated',
),
),
),
那么,如果你通过了类似于:
它将指向策划的行动。因此约束将只限制可以匹配的内容,我希望有我的默认路线<代码>/关于我们,
/联系
,/隐私政策
等。。但同时也有我的动态路由,因此我的用户创建的路由在本例中将是组名(即-/dev group
,/只是另一个组
,而且它们的末尾不总是有组)。动态创建的路由将在数据库中,而我的默认路由当前在静态文件中。不确定我是否理解,但我使用传递类似/type/id/free-text-for-seo.html的内容来执行此操作,因此例如:/group name/1/administrator.html,如果这是您需要的,那么您可以使用约束,然后在操作中,您将检查id是否有效。我发布了一个更新,这可能解释了我要做的事情,因此您需要一个路由,该路由将使用与每个文本匹配的正则表达式“curated_url”=>“*”,然后创建所有静态路由,ZF2将根据顺序知道选择哪个路由,首先是静态的,然后是regexI听说我可以做一个hashmap或者沿着这些行做一些事情。SSO约束只会限制可以匹配的内容,我希望有我的默认路由<代码>/关于我们,/联系
,/隐私政策
等。。但同时也有我的动态路由,因此我的用户创建的路由在本例中将是组名(即-/dev group
,/只是另一个组
,而且它们的末尾不总是有组)。动态创建的路由将在数据库中,而我的默认路由当前在静态文件中。不确定我是否理解,但我使用传递类似/type/id/free-text-for-seo.html的内容来执行此操作,因此例如:/group name/1/administrator.html,如果这是您需要的,那么您可以使用约束,然后在操作中,您将检查id是否有效。我发布了一个更新,这可能解释了我要做的事情,因此您需要一个路由,该路由将使用与每个文本匹配的正则表达式“curated_url”=>“*”,然后创建所有静态路由,ZF2将根据顺序知道选择哪个路由,首先是静态的,然后regexI听说我可以做一个hashmap或者类似的东西