我正在努力尝试将一些控制器的路由放在zend框架2中,即使在我读了很多之后,我也不明白为什么它仍然告诉我请求的控制器不能映射到现有的控制器类。我有一个名为CRM的模块,在src文件夹中有Contacts和Companies,每个都有Controller/Form/Model。这是我的module.config文件:
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',
),
),);
任何帮助都将不胜感激。
发布于 2013-02-11 21:14:19
如果我正确理解了问题和您的结构,您需要在您的autoloader配置中设置名称空间...
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',
),
),
);
}发布于 2013-02-11 09:03:00
在您的配置的顶部,您具有Controller invokables配置:
'CRM\Controller\Contacts' => 'CRM\Controller\ContactsController',上面的第一个值是一个标识符。这就是您要在路由定义中使用的内容。例如,您的contacts路由-尝试更改以下内容:
'defaults' => array(
'controller' => 'CRM\Controller\Contacts',
'action' => 'index',
),https://stackoverflow.com/questions/14803898
复制相似问题