This repository features a modular HMVC (Hierarchical Model-View-Controller) architecture for CodeIgniter 4, integrated with the official authentication system, CodeIgniter 4 Shield. It also includes a comprehensive Admin Dashboard built with AdminLTE, providing a robust foundation for scalable and secure web applications.
Create a project
composer create-project simpletine/codeigniter4-starter ci4_hmvc --stability=dev
Copy env
file and setup database environment
cp env .env
Run the app, using different port, add options --port=9000
php spark serve
Install HMVC package
composer require simpletine/hmvc-shield
Setup Command Line
php spark simpletine:setup
email: super@admin.com
password: password
Use command line to create a new user
php spark shield:user create
If you are using old versions, after composer update, you need to update the index.php
and spark
file to root folder (Upgrading to v4.4.8)
composer update
cp vendor/codeigniter4/framework/public/index.php public/index.php
cp vendor/codeigniter4/framework/spark spark
Commands available and funcationality
Create a new module named Blogs
php spark module:create Blogs
Clone a existing module of Blogs
and renamed to Items
php spark module:copy Blogs Items
Create a controller to module Blogs
named Categories.php
php spark module:controller Blogs Categories
Create a model to module Blogs
named Categories.php
php spark module:model Blogs Categories
Publish require assets to public
folder
php spark publish:assets
Publish views with AdminLTE
to COnfig/Auth.php
php spark publish:views
Additional options for the commands
Create a new controller and view to Admin
module with AdminLTE
php spark module:controller Admin Users --admin
App
├── Modules
│ └── Blogs
│ ├── Config
│ └── Routes.php
│ ├── Controllers
│ └── Blogs.php
│ ├── Models
│ └── Blogs.php
│ └── Views
│ └── index.php
└── ...
Add new subroutes to blogs
named new
with method name
$routes->get('new', 'Blogs::new');
Sample of routes group after new subroutes
$routes->group(
'blogs', ['namespace' => '\Modules\Blogs\Controllers'], function ($routes) {
$routes->get('/', 'Blogs::index');
$routes->get('new', 'Blogs::new');
}
);
Default instance of containing all rules applicable for the CodeIgniter organization
composer run fix
At App/Config/Autoload.php
, you can configure your custom namespace:
public $psr4 = [
"Blogs" => APPPATH . "Modules/Blogs", // Example
// ...
];