DIRECTORY STRUCTURE
admin/
assets/ contains assets definition
components/ contains custom components for views
controllers/ contains Web controller classes
models/ contains model classes
views/ contains view files
api/ contains api folders
commands/ contains console commands (controllers)
commom/models/ contains commom models (Notification, Sms, WebSocket)
config/ contains application configurations
front/ contains automatic api documentation controller
mail/ contains view files for e-mails
messages/ contains dictionaries for application
runtime/ contains files generated during runtime
vendor/ contains dependent 3rd-party packages
web/ contains the entry script and Web resources
INSTALLATION
Install
You can then install this project template using the following commands:, (*1)
Extract the archive file downloaded from repo to
a directory or clone it by git, (*2)
git clone repo.git path/to/folder
Now you should run a script in the root directory of application.
It creates admin catalog (if it is need for your projects) and api catalogs, names of which you should enter., (*3)
php RSInstaller.php
Now you should install composer, (*4)
composer install
You can check installation., (*5)
php yii serve
You can then access the admin part of application through the following URL:, (*6)
http://localhost:8080/admin
CONFIGURATION
Database
Edit the file config/db/db.php
with real data, for example:, (*7)
return [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=yii2basic',
'username' => 'root',
'password' => '1234',
'charset' => 'utf8',
];
Params
Edit the file 'config/params.php', (*8)
return [
'adminEmail' => ['admin@example.com' => 'project-name'], //if you will send email
'sms'=> [ //if you will send sms
'CompanyName' => 'SMS-INFO',
'AccountId' => '',
'AccountKey' => '',
],
'firebaseApiKey' => '' //if you will send push-notification
];
COMMANDS
Automatic documentation
You can generate automatic docs for your api by using SwaggerController. It finds comments in swagger format in files of
folder {directoryPath} and generate yaml file {resultYamlPath}., (*9)
php yii swagger {directoryPath} {resultYamlPath}
Try run command bellow to see documentation example., (*10)
php yii swagger api/pub/v1/tests/api web/files/public-test-v1.yml
You can then access the documentation of api through the following URL:, (*11)
http://localhost:8080/docs/public-test-v1
Cron settings
You should add cron jobs in CronController and run following command:, (*12)
php yii cron
Internationalization
With the help of TranslationController you can automatic add phrases in Yii::t() and model labels into dictionary file., (*13)
COMMON MODELS
Notification
Lets your application send push notifications to web, android or ios applications with firebase., (*14)
Sms
Lets your application send sms., (*15)
TESTING
Tests are located in tests
directory. They are developed with Codeception PHP Testing Framework.
By default there are 3 test suites:, (*16)
unit
functional
acceptance
Tests can be executed by running, (*17)
vendor/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., (*18)
Running acceptance tests
To execute acceptance tests do the following:, (*19)
-
Rename tests/acceptance.suite.yml.example
to tests/acceptance.suite.yml
to enable suite configuration, (*20)
-
Replace codeception/base
package in composer.json
with codeception/codeception
to install full featured
version of Codeception, (*21)
-
Update dependencies with Composer, (*22)
composer update
-
Download Selenium Server and launch it:, (*23)
java -jar ~/selenium-server-standalone-x.xx.x.jar
In case of using Selenium Server 3.0 with Firefox browser since v48 or Google Chrome since v53 you must download GeckoDriver or ChromeDriver and launch Selenium with it:, (*24)
# for Firefox
java -jar -Dwebdriver.gecko.driver=~/geckodriver ~/selenium-server-standalone-3.xx.x.jar
# for Google Chrome
java -jar -Dwebdriver.chrome.driver=~/chromedriver ~/selenium-server-standalone-3.xx.x.jar
As an alternative way you can use already configured Docker container with older versions of Selenium and Firefox:, (*25)
docker run --net=host selenium/standalone-firefox:2.53.0
-
(Optional) Create yii2_basic_tests
database and update it by applying migrations if you have them., (*26)
tests/bin/yii migrate
The database configuration can be found at config/test_db.php
., (*27)
-
Start web server:, (*28)
tests/bin/yii serve
-
Now you can run all available tests, (*29)
# run all available tests
vendor/bin/codecept run
# run acceptance tests
vendor/bin/codecept run acceptance
# run only unit and functional tests
vendor/bin/codecept run unit,functional
Code coverage support
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:, (*30)
#collect coverage for all tests
vendor/bin/codecept run -- --coverage-html --coverage-xml
#collect coverage only for unit tests
vendor/bin/codecept run unit -- --coverage-html --coverage-xml
#collect coverage for unit and functional tests
vendor/bin/codecept run functional,unit -- --coverage-html --coverage-xml
You can see code coverage output under the tests/_output
directory., (*31)