Yii2-advanced-template is based on yii2-app-advanced created by yii2 core developers. There are several upgrades made to this template.
Note: I am assuming that you know how to: install and use Composer, and install additional packages/drivers that may be needed for you to run everything on your system. In case you are new to all of this, you can check my guides for installing default yii2 application templates on Windows and Linux Ubuntu/Mint operating systems, posted on http://www.freetuts.org .
1) Create database that you are going to use for your application (you can use phpMyAdmin or any other tool you like).
2) Now open up your console and
cd to your web root directory,
3) Run the Composer
composer create-project nenad/yii2-advanced-template advanced
4) Once template is downloaded, you need to initialize it in one of two environments: development (dev) or production (prod).
Change your working directory to
_protected and execute
php init command:
Type 0 for development, execute command, type yes to confirm, and execute.
5) Now you need to tell your application to use database that you have previously created. Open up main-local.php config file in
and adjust your connection credentials.
6) Back to the console. It is time to run yii migrations that will create necessary tables in our database. While you are inside
_protected folder execute
./yii migrate command:
or if you are on Windows:
7) Execute rbac controller init action that will populate our rbac tables with default roles and permissions:
or if you are on Windows:
You are done, you can start your application in your browser.
To see frontend side of your application visit this url in your localhost:
To see backend side of your application visit this url in your localhost:
Info: First user that signs up will get 'The Creator' (super admin) role. This is supposed to be you. This role have all possible super powers :) . Every other user that signs up after the first one will get 'member' role. Member is just normal authenticated user.
If you want to run tests you should create additional database that will be used to store your testing data. Usually testing database will have the same structure like the production one. I am assuming that you have Codeception installed globally, and that you know how to use it. Here is how you can set up everything easily:
1) Let's say that you have created database called
advanced. Go create the testing one called
2) Inside your
main-local.php config file change database you are going to use to
3) Open up your console and
cd to the
_protected folder of your application.
4) Run the migrations again:
./yii migrate or if you are on Windows
5) Run rbac/init again:
./yii rbac/init or if you are on Windows
6) Now you can tell your application to use your
advanced database again instead of
main-local.php config file again.
7) Now you are ready to tell Codeception to use
_protected/tests/codeception/config/config.php file tell your
db to use
8) Start your php server inside the root of your application:
php -S localhost:8080
9) To run tests written for frontend side of your application
_protected/tests/codeception/frontend , run
codecept build and then run your tests.
10) Take similar steps like in step 9 for backend and common tests.
_protected backend assets/ contains backend assets definition config/ contains backend configurations controllers/ contains Web controller classes helpers/ contains helper classes models/ contains backend-specific model classes runtime/ contains files generated during runtime views/ contains view files for the Web application common config/ contains shared configurations mail/ contains view files for e-mails models/ contains model classes used in backend and frontend rbac/ contains role based access control classes console config/ contains console configurations controllers/ contains console controllers (commands) migrations/ contains database migrations models/ contains console-specific model classes runtime/ contains files generated during runtime environments contains environment-based overrides frontend assets/ contains frontend assets definition config/ contains frontend configurations controllers/ contains Web controller classes models/ contains frontend-specific model classes runtime/ contains files generated during runtime views/ contains view files for the Web application widgets/ contains frontend widgets assets contains application assets generated during runtime backend contains the entry script and Web resources for backend themes contains frontend themes
1) settings are stored in config/params.php configuration file to reduce database load
2) account update is merged with user management and user management is more powerful now
3) User model has been separated on UserIdentity and User (for easier understanding and use)
4) 4 beautiful bootstrap responsive themes are included out of the box
5) comment style is changed according to yii2 official style
6) tests has been rewritten according to the changes that has been made
7) a lot of other polishing has been done
1) option to CRUD articles ( posts ) has been added
2) translation support has been included and Serbian translation has been added
3) themes have been improved
4) new roles, permissions and rules are added
5) other code refactoring has been done
1) Adds uploads folder to the application root that can be shared by both frontend and backend applications.
2) Adds, @uploads alias has been added, so you can use it in your code ( will target your_app_name/uploads folder )
3) Additional translations are included. Thanks to MeFuMo and hior
4) Alert widget call is added to backend main.php layout
5) Minor fixes
Since 1.1.1 version has been released, password strength extension has been included as a core part of improved templates. Usage is very simple:
In our signup, user create/update and password reset forms password strength meter is always displayed when users are entering their password. This will give them visual representation of their password strength.
But this is not all. As The Creator you have option in your settings "Force Strong Password" that you can use. If you turn it on, users will be forced to use strong passwords according to preset you chose. For example if you use normal preset, users will be forced to use at least 8 characters long password, with at least one upper-case and one lower-case letter, plus at least one digit.
Since version 2 settings are stored in config/params.php file!
By default normal preset is used for signup and user create/update forms. For password reset we are using 'reset' preset if you want to customize which presets is used, see SignupForm model, User model and ResetPasswordForm model. You will see rules declared for using strong passwords. Presets are located in
vendor/nenad/yii2-password-strength/presets.php. You can chose some other preset declared in presets.php, or create new ones.
Version 2.2.0 - Summary is given in separate section of this guide.
Version 2.1.1 - Removes password reset link from backend login form.
Version 2.1.0 - Summary is given in separate section of this guide.
Version 2.0.2 - Adds fix for multiple flashes bug. Described here
Version 2.0.1 - Just few small cosmetic changes.
Version 2.0.0 - summary is given in separate section of this guide.
Version 1.2.3 - Optimizes password strength for mobile devices.
Version 1.2.2 - Fixes 404 issue that some people have on some systems.
Version 1.2.1 - Fixes issue #2 (for PostgreSQL users). Plus adds small typos and code fixes.
Version 1.2.0 - changes the way of using themes. Instead of specifying which theme you want to use in common/config/main.php, now you will have separate settings in frontend/config/main.php and backend/config/main.php where you will have to specify which theme you want to use for your frontend and which for backend application.