Question: What are the basic steps for create new module?
Suppose you are creating module with name of Album.
- Attach module with application.
Open file i.e /config/application.config.php, Add Blog in array like below:return array( 'modules' => array( 'Application', 'Blog' ), ); - create Album folder inside the module folder.
- After creating the Album folder inside modules, Create below folder structure.
Album/
Module.php
autoload_classmap.php
autoload_function.php
autoload_register.php
config/
module.config.php
public/
images/
css/
js/
src/
Album/
Controller/
AlbumController.php
Form/
AlbumForm.php
Model/
Album.php
view/
album/
album/
index.phtml
layout/
layout.phtml
error
index.phtml
Question: How to attach a module in main application?
Go to File config/application.config.php, and add your module name in modules array.
See example below (We have add a module Album).
return array(
'modules' => array(
'Application',
'Album'
),
);
Question: What is Service?
A Service is an object in the module that executes complex logic of the application.
Here we do all difficult logic together and gives you easy to understand results.
Question: What are the basic steps for creating the Service?
-
Create a folder service in-side the module and path will be similar to below:
/module/{moduleName}/src/{moduleName}/Service/{Album}Service.php -
Create a model in-side the module and path will be similar to below:
/module/{moduleName}/src/{moduleName}/Model/Post.php -
Add Following code in controller where you want to use.
use {moduleName}\Service\PostServiceInterface;
Add following in controller (you can use another variable)protected $postService; public function __construct(PostServiceInterface $postService) { $this->postService = $postService; }
- Create the Factory class (path: /module/{moduleName}/src/{moduleName}/Factory/{factoryClass}.php)
-
Register your service in module.config.php. (Add following code)
'service_manager' => array( 'invokables' => array( '{moduleName}\Service\{Service}' => '{moduleName}\Service\{Service}' ) - Register your service from module.config
(Path: /module/Blog/config/module.config.php)'controllers' => array( 'factories' => array( '{moduleName}\Controller\List' => '{moduleName}\Factory\{factoryClass}' )
There are different module.config.php file inside each module (module/{moduleName/config/module.config.php}.
In this you you can set the database credentials.
'db' => array(
'driver' => 'Pdo',
'username' => 'SECRET_USERNAME', //edit this
'password' => 'SECRET_PASSWORD', //edit this
'dsn' => 'mysql:dbname=blog;host=localhost',
'driver_options' => array(
\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''
)
),
