Проблемы с маршрутизацией в ZF2: контроллер не сопоставлен

Я пытаюсь создать простой CRUD в Zf2, чтобы узнать это, и у меня возникают проблемы с маршрутизацией единственного контроллера, который у меня есть. У меня есть эта ошибка;

Msgstr «Запрошенный контроллер не может быть сопоставлен с существующим классом контроллера».

Я пытаюсь назвать этот маршрут: 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

Решение

Так что просто для дальнейшего объяснения моего комментария, включая :controller Сегментируя маршрут, вы сказали ZF попытаться сопоставить первое, что в вашем URL, с чем-то, что менеджер контроллера может загрузить (в вашем случае, один из ключей в вашем контроллере вызывается). Контроллер по умолчанию, который вы определили в вашем маршруте, будет применяться, только если вы посетили 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',
),
),
),
),
),
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]