В этой статье будет рассмотрен пример создания нового модуля для Zend Framework 2. Максимально кратко и сжато. Эта статья является продолжением статьи Установка Zend Framework 2 на windows 7 под xampp 1.8
Создание скелетона модуля users
Переходим в папку модулей и создадим модуль users:
cd /d/php/zendapp.loc/CommunicationApp/module/
$ git clone git://github.com/zendframework/ZendSkeletonModule.git Users
Создание контроллеров и представлений
Переходим в модуль users и создаем контроллер:
cd /d/php/zendapp.loc/CommunicationApp/module/users
mkdir -p src/Users/Controller/
cd src/Users/Controller/
touch IndexController.php
Добавляем следующий код в контроллер:
namespace Users\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
class IndexController extends AbstractActionController
{
public function indexAction()
{
$view = new ViewModel();
return $view;
}
public function registerAction()
{
$view = new ViewModel();
$view->setTemplate('users/index/new-user');
return $view;
}
public function loginAction()
{
$view = new ViewModel();
$view->setTemplate('users/index/login');
return $view;
}
}
Создадим представления:
cd /d/php/zendapp.loc/CommunicationApp/module/users
mkdir -p view/users/index/
Создадим здесь 3 файла представлений:
index.phtml
<h1>Welcome to Users Module</h1>
<a href="/users/index/login">Login</a> | <a href="/users/index/register">New User Registration</a>
login.phtml
<h2> Login </h2>
<p> This page will hold the content for the login form </p>
<a href="/users"><< Back to Home</a>
new-user.phtml
<h2> New User Registration </h2>
<p> This page will hold the content for the registration
form </p>
<a href="/users"><< Back to Home</a>
Изменение конфига модулей
В файле D:\php\zendapp.loc\CommunicationApp\module\Users\autoload_classmap.php пропишем только лишь:
return [];
В файле D:\php\zendapp.loc\CommunicationApp\module\Users\config\module.config.php пропишем такой код:
return array(
'controllers' => array(
'invokables' => array(
'Users\Controller\Index' => 'Users\Controller\IndexController',
),
),
'router' => array(
'routes' => array(
'users' => array(
'type' => 'Literal',
'options' => array(
// Change this to something specific to your module
'route' => '/users',
'defaults' => array(
// Change this value to reflect the namespace in which
// the controllers for your module are found
'__NAMESPACE__' => 'Users\Controller',
'controller' => 'Index',
'action' => 'index',
),
),
'may_terminate' => true,
'child_routes' => array(
// This route is a sane default when developing a module;
// as you solidify the routes for your module, however,
// you may want to remove it and replace it with more
// specific routes.
'default' => array(
'type' => 'Segment',
'options' => array(
'route' => '/[:controller[/:action]]',
'constraints' => array(
'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
),
'defaults' => array(
),
),
),
),
),
),
),
'view_manager' => array(
'template_path_stack' => array(
'users' => __DIR__ . '/../view',
),
),
);
Конфигурирование приложения
Добавим в список модулей в файле D:\php\zendapp.loc\CommunicationApp\config\application.config.php:
'modules' => array(
'Application',
'Users',
),
Проверяем: http://zendapp.loc/users