Yii 2 Basic Application Template is a skeleton Yii 2 application best for rapidly creating small projects.
It includes all commonly used configurations that would allow you to focus on adding new features to your application.
assets/ contains assets definition
commands/ contains console commands (controllers)
config/ contains application configurations
controllers/ contains Web controller classes
mail/ contains view files for e-mails
models/ contains model classes
runtime/ contains files generated during runtime
tests/ contains various tests for the basic application
vendor/ contains dependent 3rd-party packages
views/ contains view files for the Web application
web/ contains the entry script and Web resources
- Sign in, Sign up, Forgot Password, etc.
- User management
- RBAC with predefined
guest
,user
andadmin
roles - Content management components: cms, comments
- Yii2 component for logging cron jobs
- Account page
- Key-value storage component
- Scheduling extension for running cron jobs
- Support multipath migrations
- Support Docker
- Included PHP Coding Standards Fixer
- Support environments (dev, prod)
The minimum requirement by this application template that your Web server supports PHP 5.6
If you do not have Composer, follow the instructions in the Installing Yii section of the definitive guide to install it.
With Composer installed, you can then install the application using the following commands:
composer create-project --prefer-dist --stability=dev yii2mod/base application
The first command installs the composer asset plugin
which allows managing bower and npm package dependencies through Composer. You only need to run this command
once for all. The second command installs the yii2mod/base application in a directory named application
.
You can choose a different directory name if you want.
After you install the application, you have to conduct the following steps to initialize the installed application. You only need to do these once for all.
- Init the application by the following command:
./init --env=Development
-
Create a new database and adjust the
components['db']
configuration inconfig/common-local.php
accordingly. -
Apply migrations:
php yii migrate
- create default tables for applicationphp yii rbac/migrate
- create roles, permissions and rulesphp yii fixture "*"
- load fixtures (cms pages and users)
- Set document root of your web server to
/path/to/application/web/
folder.
You need to have docker (1.10.0+) and docker-compose (1.6.0+) installed.
You can install the application using the following commands:
composer create-project --no-install --stability=dev yii2mod/base yii2mod-base
cd yii2mod-base
./init --env=Development
cp .env{.dist,}
cp docker-compose.override.yml{.dist,}
docker-compose up -d --build
In
.env
file your need to set your UID. You can get your UID by the following command in the terminal:id -u <username>
It may take some minutes to download the required docker images. When done, you need to install vendors as follows:
docker exec -it yii2mod-web-container bash
composer install
chown -R www-data:www-data runtime web/assets vendor
After this steps, you need to update db
section in the common-local.php
file as follows:
<?php
$config = [
'components' => [
'db' => [
'dsn' => 'mysql:host=db;dbname=yii2mod_base',
'username' => 'docker',
'password' => 'secret',
],
],
];
return $config;
When done, you need to execute the following commands in the web container:
php yii migrate
php yii rbac/migrate
php yii fixture "*"
After this steps, you can access your app from http://localhost.
Tests are located in tests
directory. They are developed with Codeception PHP Testing Framework.
By default there are 3 test suites:
unit
functional
acceptance
- Create a new database and configure database connection in
config/test_db.php
accordingly. - Execute migrations by the following command:
./yii_test migrate --interactive=0 && ./yii_test rbac/migrate --interactive=0
- Run unit and functional tests:
bin/codecept run
The command above will execute unit and functional tests. Unit tests are testing the system components, while functional tests are for testing user interaction. Acceptance tests are disabled by default as they require additional setup since they perform testing in real browser.
To execute acceptance tests do the following:
-
Rename
tests/acceptance.suite.yml.example
totests/acceptance.suite.yml
to enable suite configuration -
Replace
codeception/base
package incomposer.json
withcodeception/codeception
to install full featured version of Codeception -
Update dependencies with Composer
composer update
-
Download Selenium Server and launch it:
java -jar ~/selenium-server-standalone-x.xx.x.jar
-
Start web server:
./yii_test serve
-
Now you can run all available tests
# run all available tests bin/codecept run # run acceptance tests bin/codecept run acceptance # run only unit and functional tests bin/codecept run unit,functional
By default, code coverage is disabled in codeception.yml
configuration file, you should uncomment needed rows to be able
to collect code coverage. You can run your tests and collect coverage with the following command:
#collect coverage for all tests
bin/codecept run -- --coverage-html --coverage-xml
#collect coverage only for unit tests
bin/codecept run unit -- --coverage-html --coverage-xml
#collect coverage for unit and functional tests
bin/codecept run functional,unit -- --coverage-html --coverage-xml
You can see code coverage output under the tests/_output
directory.