我试图在Zf2中创建一个简单的CRUD来了解它,并且我在路由我唯一的控制器时遇到了问题。我有这个错误;
"请求的控制器无法映射到现有的控制器类"。
我试图打电话给这条路线:http://zf2.local/Listapp
这是我的结构:
module/Listapp/src/Listapp/Controller/ListappController.php
命名空间为namespace Listapp\Controller;
这是我的自动加载器配置:
public function getAutoloaderConfig()
{
return array(
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
// Autoload Listapp classes
__NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
// Autoload ListappController classes
'ListappController' => __DIR__ . '/src/Listapp',
)
)
);
}
这是我的module.config.php
:
return array(
'controllers' => array(
'invokables' => array(
'Listapp\Controller\Listapp' => 'Listapp\Controller\ListappController'
)
),
'router' => array(
'routes' => array(
'listapp' => array(
'type' => 'segment',
'options' => array(
'route' => '/[:controller[/:action][/:id]]',
'constraints' => array(
'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id' => '[0-9]+',
),
'defaults' => array(
'controller' => 'Listapp\Controller\Listapp',
'action' => 'index',
),
),
),
),
),
'view_manager' => array(
'template_path_stack' => array(
'Listapp' => __DIR__ . '/../view',
),
), );
任何帮助将不胜感激!
编辑: 这是我的控制器中的代码(减去其他CRUD函数):
namespace Listapp\Controller;
use Zend\Mvc\Controller\AbstractActionController;
class ListappController extends AbstractActionController
{
public function indexAction()
{
}
}
答案 0 :(得分:2)
因此,为了进一步解释我的评论,在您的路线中添加:controller
段,您已告诉ZF尝试将您网址中的第一件事与控制器管理员可以加载的内容相匹配(在你的情况下,你控制器invokables中的一个键)。您在路线中定义的控制器默认仅适用于您访问http://zf2.local/
的情况。
因此,对您来说,最快的解决方法是将配置更改为:
'controllers' => array(
'invokables' => array(
'Listapp' => 'Listapp\Controller\ListappController'
)
),
' Listapp'然后,URL将匹配此控制器,一切都将按预期工作。
一般情况下,如果你避免在路由中使用:controller
并且每个控制器至少有一个路由,例如:
'controllers' => array(
'invokables' => array(
'Listapp\Controller\Listapp' => 'Listapp\Controller\ListappController'
)
),
'router' => array(
'routes' => array(
'listapp' => array(
'type' => 'segment',
'options' => array(
'route' => '/listapp[/:action[/:id]]',
'constraints' => array(
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id' => '[0-9]+',
),
'defaults' => array(
'controller' => 'Listapp\Controller\Listapp',
'action' => 'index',
),
),
),
),
),