Yii2 Starter Kit Application Template

Installs: 3 970

Dependents: 0

Stars: 298

Watchers: 81

Forks: 154

Open Issues: 5

Language: PHP

2.0.0 2015-05-09 08:01 UTC


Packagist Packagist PayPal donate button Dependency Status

This is Yii2 start application template.

It was created and developing as a fast start for building an advanced sites based on Yii2.

It covers typical use cases for a new project and will help you not to waste your time doing the same work in every project





administrator role account

Login: webmaster
Password: webmaster

manager role account

Login: manager
Password: manager

user role account

Login: user
Password: user


  • Beautiful and open source dashboard theme for backend AdminLTE 2
  • Translations: English, Spanish, Russian, Ukrainian
  • Translations Editor
  • Language change action + behavior to choose locale based on browser preferred language
  • Sign in, Sign up, profile(avatar, locale, personal data) etc
  • OAuth authorization
  • User management
  • RBAC with predefined guest, user, manager and administrator roles
  • RBAC migrations support
  • Content management components: articles, categories, static pages, editable menu, editable carousels, text blocks
  • Key-value storage component
  • Application settings form (based on KeyStorage component)
  • Ready-to-go RESTful API module
  • File storage component + file upload widget
  • On-demand thumbnail creation trntv/yii2-glide
  • Useful behaviors (GlobalAccessBehavior, CacheInvalidateBehavior, MaintenanceBehavior)
  • Yii2 log web interface
  • Application timeline component
  • Cache web controller
  • Maintenance mode component (more)
  • System information web interface
  • dotenv support
  • ExtendedMessageController with ability to replace source code language and migrate messages between message sources
  • Aceeditor widget
  • Datetimepicker widget,
  • Imperavi Reactor Widget,
  • Elfinder Extension
  • Xhprof Debug panel
  • Extended IDE autocompletion
  • Nginx config example
  • Test-ready
  • Vagrant support
  • many other features i'm lazy to write about :-)

Application Components


If you want to store application messages in DB and to have ability to edit them from backend, run:

php console/yii message/migrate @common/config/messages/php.php @common/config/messages/db.php

it will copy all existing messages to database

Then uncomment config for DbMessageSource in



Key storage is a key-value storage to store different information. Application settings for example. Values can be stored both via api or by backend CRUD component.

Yii::$app->keyStorage->set('articles-per-page', 20);
Yii::$app->keyStorage->get('articles-per-page'); // 20

Maintenance mode

Starter kit has built-in component to provide a maintenance functionality. All you have to do is to configure maintenance component in your config

'bootstrap' => ['maintenance'],
'components' => [
    'maintenance' => [
        'class' => 'common\components\maintenance\Maintenance',
        'enabled' => Astronomy::isAFullMoonToday()

This component will catch all incoming requests, set proper response HTTP headers (503, "Retry After") and show a maintenance message. Additional configuration options can be found in a corresponding class.

Starter kit configured to turn on maintenance mode if frontend.maintenance key in KeyStorage is set to true


 public function behaviors()
     return [
             'class' => `common\behaviors\CacheInvalidateBehavior`,
             'tags' => [
                       return "tag-{$model->id}"
             'keys' => [
                      return "key-{$model->id}"

Add in your application config:

'as globalAccess'=>[
                'allow' => true,
                'roles' => ['?'],
                'allow' => true,
                'roles' => ['@'],
                'allow' => true,
                'roles' => ['?', '@'],
                'allow' => true,
                'roles' => ['@']

It will allow access to you application only for authentificated users.

Widgets configurable from backend

  1. Create carousel in backend
  2. Use it:
<?php echo DbCarousel::widget(['key' => 'key-from-backend']) ?>
  1. Create text block in backend
  2. Use it:
<?php echo DbText::widget(['key' => 'key-from-backend']) ?>
  1. Create text block in backend
  2. Use it:
<?php echo DbMenu::widget(['key' => 'key-from-backend']) ?>



      'class' => '\common\grid\EnumColumn',
      'attribute' => 'status',
      'enum' => User::getStatuses() // [0=>'Deleted', 1=>'Active']


Starter Kit has fully configured and ready-to-go REST API module. You can access it on


common\base\MultiModel - class for handling multiple models in one In controller:

$model = new MultiModel([
    'models' => [
        'user' => $userModel,
        'profile' => $userProfileModel

if ($model->load(Yii::$app->request->post()) && $model->save()) {

In view:

<?php echo $form->field($model->getModel('account'), 'username') ?>

<?php echo $form->field($model->getModel('profile'), 'middlename')->textInput(['maxlength' => 255]) ?>    


  • common\behaviors\GlobalAccessBehavior - allows to set access rules for your application in application config
  • common\behaviors\LocaleBehavior - discover user locale from browser or account settings and set it
  • common\behaviors\LoginTimestampBehavior - logs user login time
  • common\validators\JsonValidator - validates a value to be a valid json
  • common\rbac\OwnModelRule - simple rule for RBAC to check if the current user is model owner


1. Where is Gii?

Gii is available on:

How to contribute?

You can contribute in any way you want. Any help appreciated, but most of all i need help with docs (^_^)

Have any questions?

mail to



This template was created mostly for developers NOT for end users. This is a point where you can begin your application, rather than creating it from scratch. Good luck!