首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >zend框架2中的路由

zend框架2中的路由
EN

Stack Overflow用户
提问于 2013-02-11 07:31:10
回答 2查看 6.1K关注 0票数 3

我正在努力尝试将一些控制器的路由放在zend框架2中,即使在我读了很多之后,我也不明白为什么它仍然告诉我请求的控制器不能映射到现有的控制器类。我有一个名为CRM的模块,在src文件夹中有Contacts和Companies,每个都有Controller/Form/Model。这是我的module.config文件:

代码语言:javascript
复制
     array(
         'controllers' => array(
         'invokables' => array(
              'CRM\Controller\Contacts' => 'CRM\Controller\ContactsController',
          'CRM\Controller\Companies' => 'CRM\Controller\CompaniesController',
    ),
),


'router' => array(
    'routes' => array(
        'contacts' => array(
            'type'    => 'Segment',
            'options' => array(
                'route'    => '/contacts[/:action][/:id]',
                'constraints' => array(
                    'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                    'id'     => '[0-9]+',
                ),
                'defaults' => array(
                    'controller' => 'Contacts\Controller\Contacts',
                    'action'     => 'index',
                ),
            ),
        ),

        'companies' => array(
            'type'    => 'segment',
            'options' => array(
                'route'    => '/companies[/:action][/:id]',
                'constraints' => array(
                    'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                    'id'     => '[0-9]+',
                ),
                'defaults' => array(
                    'controller' => 'Companies\Controller\Companies',
                    'action'     => 'index',
                ),
            ),
        ),
    ),
),



'view_manager' => array(
    'template_path_stack' => array(
        'contacts' => __DIR__ . '/../view/crm',
        'companies' => __DIR__ . '/../view/crm',
    ),
),

);

任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-11 21:14:19

如果我正确理解了问题和您的结构,您需要在您的autoloader配置中设置名称空间...

代码语言:javascript
复制
public function getAutoloaderConfig()
{
    return array(
        'Zend\Loader\StandardAutoloader' => array(
            'namespaces' => array(
                // CRM
                __NAMESPACE__  => __DIR__ . '/src/' . __NAMESPACE__,
                // Contacts
                'Contacts' => __DIR__ . '/src/Contacts',
                // Companies
                'Companies' => __DIR__ . '/src/Companies',
            ),
        ),
    );
}
票数 2
EN

Stack Overflow用户

发布于 2013-02-11 09:03:00

在您的配置的顶部,您具有Controller invokables配置:

代码语言:javascript
复制
'CRM\Controller\Contacts' => 'CRM\Controller\ContactsController',

上面的第一个值是一个标识符。这就是您要在路由定义中使用的内容。例如,您的contacts路由-尝试更改以下内容:

代码语言:javascript
复制
'defaults' => array(
     'controller' => 'CRM\Controller\Contacts',
     'action'     => 'index',
),
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14803898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档