ZF2让所有路由解析为一个控制器和操作

时间:2014-11-06 00:13:39

标签: php angularjs zend-framework2

我正在尝试使用AngularJS和ZF2开发和单页应用。我在路由方面遇到了麻烦。我的想法是让像/:controller /:action这样的路由解析为单个动作。我已经阅读了文档并尝试了不同的路由类型。

我的想法是让所有/:controller /:action解析为App \ IndexController \ IndexAction,这样只返回Angular init代码。加载初始页面后,Angular将向/ template /:controller /:action发送辅助请求以检索模板和/ api /:controller /:action以收集模板的数据。 下面是我尝试工作的正则表达式路线的示例。

'app' => array(
    'type'    => 'Regex',
    'options' => array(
        'regex'    => '/(?[a-zA-Z][a-zA-Z0-9_-]*\/[a-zA-Z][a-zA-Z0-9_-]*)',
        'defaults' => array(
            'controller'    => 'App\Controller\IndexController',
            'action'        => 'index',
        ),
        'spec' => '/'
    ),
    'may_terminate' => true,
),

2 个答案:

答案 0 :(得分:2)

为什么你不定义3种主要的段类型路径。请参阅以下代码:

'all' => [
    'type'    => 'Segment',
    'options' => [
        'route'    => '/app/[:controller[/:action]]',
        'constraints' => [
            'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
            'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
        ],
        'defaults' => [
            'controller' => 'App\Controller\IndexController',
            'action' => 'index'
        ],
    ],
],

'template' => [
    'type'    => 'Segment',
    'options' => [
        'route'    => '/template/[:controller[/:action]]',
        'constraints' => [
            'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
            'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
        ],
        'defaults' => [],
    ],
],

'api' => [
    'type'    => 'Segment',
    'options' => [
        'route'    => '/api/[:controller[/:action]]',
        'constraints' => [
            'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
            'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
        ],
        'defaults' => [],
    ],
]

答案 1 :(得分:2)

只需使用Segment路线:

'app' => array(
    'type' => 'Segment',
    'options' => array(
        'route' => ':controller-fake/:action-fake',
        'defaults' => array(
            'controller' => 'App\Controller\Index',
            'action' => 'index',
        ),
    ),
),