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或者类似的东西