Я пытаюсь изучить Zend Framework 3, и я сделал учебник по Альбому и другой учебник по блогам.Я пишу прямые php-приложения около 3 лет и написал 2 веб-приложения, используя Slim 3. Я пытаюсь обернуть голову вокруг модулей.Я не совсем понимаю, что такое модуль.Я понял, что модули - это то, что модуль был крошечным приложением внутри основного приложения.Я пытался создать 2 контроллера в одном модуле и визуализировать различные представления из этих контроллеров.Я искал весь день и не смог найти способ создания двух контроллеров и их маршрутизации к различным представлениям.Но я нашел много примеров приложения, имеющего 5 разных модулей, все с одним контроллером и, возможно, разные представления, на которые указывает метод класса.Насколько я понимаю, что модуль должен быть создан для каждой страницы?Например, модуль входа в систему, модуль about и модуль контактов?
module.config.php
<?php
namespace Blog;
use Zend\Router\Http\Literal;
use Zend\Router\Http\Segment;
use Zend\ServiceManager\Factory\InvokableFactory;
return [
// this line opens the configuration fro the Route Manager
'router' => [
// open configuration for all possible routes
'routes' => [
// Define a new route called 'blog'
'blog' => [
// define 'literal' route type:
'type' => Literal::class,
// configure the route itself
'options' => [
// listen to '/blog' as uri:
'route' => '/blog',
// define default controller and action to be called when
// this route is matched
'defaults' => [
'controller' => Controller\ListController::class,
'action' => 'index',
],
'login' => [
'type' => Literal::class,
'options' => [
'route' => '/blog/login',
'defaults' => [
'controller' => Controller\LoginController::class,
'action' => 'login',
],
],
],
],
],
],
],
'service_manager' => [
'aliases' => [
Model\PostRepositoryInterface::class => Model\PostRepository::class,
],
'factories' => [
Model\PostRepository::class => InvokableFactory::class,
],
],
'controllers' => [
'factories' => [
Controller\ListController::class => Factory\ListControllerFactory::class,
Controller\LoginController::class => InvokableFactory::class,
],
],
'view_manager' => [
'template_map' => [
'login/login' => __DIR__ . '/../view/blog/login/login.phtml'
],
'template_path_stack' => [
__DIR__ . '/../view'
],
]
];
структура файла
|-- module
| |-- Application
| | |-- config
| | | |-- module.config.php
| | |-- src
| | | |-- Module.php
| | | |-- Controller
| | | |-- IndexController.php
| | |-- test
| | | |-- Controller
| | | |-- IndexControllerTest.php
| | |-- view
| | |-- application
| | | |-- index
| | | |-- index.phtml
| | |-- error
| | | |-- 404.phtml
| | | |-- index.phtml
| | |-- layout
| | |-- layout.phtml
| |-- Blog
| |-- config
| | |-- module.config.php
| |-- src
| | |-- Module.php
| | |-- Controller
| | | |-- ListController.php
| | | |-- LoginController.php
| | |-- Factory
| | | |-- ListControllerFactory.php
| | |-- Model
| | |-- Post.php
| | |-- PostCommandInterface.php
| | |-- PostRepository.php
| | |-- PostRepositoryInterface.php
| |-- view
| |-- blog
| |-- list
| | |-- index.phtml
| |-- login
| |-- login.phtml
Я работаюв модуле блога.Когда я вызываю LoginController.php, я хочу, чтобы он показывал login.phtml.Если я закомментирую маршрут блога, он будет работать, но когда я раскомментирую маршрут блога, я получу «Запрошенный URL не может быть сопоставлен путем маршрутизации».ошибка.