Маршрутизатор в Zend Framework 2: не удалось получить

Я новичок в Zend Framework, я использовал фреймворк CI и Laravel, но в моем проекте я должен использовать ZF2. Честно говоря, я не понимаю, как создать приложение с ZF2. Я следовал инструкциям отсюда: https://www.youtube.com/watch?v=OYkVHiXeGeY
но я получил некоторую ошибку.

Zend\Mvc\Controller\ControllerManager::createFromInvokable: failed retrieving "csnusercontrolleruser(alias: CsnUser\Controller\User)" via invokable class "CsnUser\Controller\UserController"; class does not exist

моя папка Strucktur:

:: module
->CsnUser
>>config
->module.config.php
>>src
->CsnUser
->Controller
->UserController.php
>>view
->csn-user
->user
->index.phtml
>>Module.php

module.php

<?php

namespace CsnUser;

use Zend\ModuleManager\Feature\AutoloaderProviderInterface;
use Zend\ModuleManager\Feature\ConfigProviderInterface;

class Module{

public function getConfig()
{
return include __DIR__ . '/config/module.config.php';
}

public function getAutoloaderConfig()
{
return array(
'Zend\Loader\StandardAutoloader' => array(
'namespace' => array(
__NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
),
),
);
}

}

module.config.php

<?php

return array(
'controllers' => array(
'invokables' => array(
'CsnUser\Controller\User' => 'CsnUser\Controller\UserController',
),
),

'router' => array(
'routes' => array(
'csn_user' => array(
'type' => 'Literal',
'options' => array(
'route' => '/csn-user',
'defaults' => array(
'__NAMESPACE__' => 'CsnUser\Controller',
'controller' => 'User',
'action' => 'index',
),
),

'may_terminate' => true,
'child_routes' => array(
'default' => 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(),
),
),
),

),
),
),

'view_manager' => array(
/*'template_map' => array(
'layout/Auth' => __DIR__ . '/../view/layout/xxxx.phtml',
),*/
'template_path_stack' => array(
'csn_user' => __DIR__ . '/../view'
),
),
);

UserController.php

<?php

namespace CsnUser\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;

class UserController extends AbstractActionController{

public function indexAction()
{
return new ViewModel();
}
}

index.phtml

<h1>Welcome</h1>

Может кто-нибудь мне помочь ?

1

Решение

Ваш getAutoLoaderConfig() метод неверен.

Попробуйте это один раз:

public function getAutoloaderConfig()
{
return array(
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
__NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
),
),
);
}

Обратите внимание на ключ namespaces в массиве.

В Ваше учебное видео в 4:40 они также используют множественное число 🙂

2

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

Я решил проблему, добавив строку в composer.json:

"autoload": {
"psr-0": {
"MyModule": "module/MyModule/src/"}
}

а затем в консоли я перешел в папку проекта и запустил:

php composer.phar update
0

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