Yii 2 Basic Project Template
- Docker
- DIRECTORY STRUCTURE
- REQUIREMENTS
- INSTALLATION
- Install via Composer
- Install from an Archive File
- Install with Docker
- CONFIGURATION
- Database
- TESTING
- Acceptance tests
- Code coverage support
- Composer scripts
- Support the project
- Follow updates
Yii 2 Basic Project Template is a skeleton Yii 2 application best for rapidly creating small projects.
The template contains the basic features including user login/logout and a contact page. It includes all commonly used configurations that would allow you to focus on adding new features to your application.
Docker ¶
DIRECTORY STRUCTURE ¶
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
REQUIREMENTS ¶
The minimum requirement by this project template that your Web server supports PHP 8.2.
INSTALLATION ¶
[!IMPORTANT]
- The minimum required PHP version of Yii is PHP
8.2.
Install via Composer ¶
If you do not have Composer, you may install it by following the instructions at getcomposer.org.
You can then install this project template using the following command:
composer create-project --prefer-dist yiisoft/yii2-app-basic basic
Now you should be able to access the application through the following URL, assuming basic is the directory
directly under the Web root.
http://localhost/basic/web/
Install from an Archive File ¶
Extract the archive file downloaded from yiiframework.com to
a directory named basic that is directly under the Web root.
Set cookie validation key in config/web.php file to some random secret string:
'request' => [
// !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
'cookieValidationKey' => '<secret random string goes here>',
],
You can then access the application through the following URL:
http://localhost/basic/web/
Install with Docker ¶
Update your vendor packages
docker-compose run --rm php composer update --prefer-dist
Run the installation triggers (creating cookie validation code)
docker-compose run --rm php composer install
Start the container
docker-compose up -d
You can then access the application through the following URL:
http://127.0.0.1:8000
Run tests inside the container
docker compose exec -T php vendor/bin/codecept build
docker compose exec -T php vendor/bin/codecept run
NOTES:
- Minimum required Docker engine version
17.04for development (see Performance tuning for volume mounts) - The default configuration uses a host-volume in your home directory
~/.composer-docker/cachefor Composer caches
CONFIGURATION ¶
Database ¶
Edit the file config/db.php with real data, for example:
return [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=yii2basic',
'username' => 'root',
'password' => '1234',
'charset' => 'utf8',
];
NOTES:
- Yii won't create the database for you, this has to be done manually before you can access it.
- Check and edit the other files in the
config/directory to customize your application as required. - Refer to the README in the
testsdirectory for information specific to basic application tests.
TESTING ¶
Tests are located in tests directory. They are developed with Codeception PHP Testing Framework.
By default, there are 3 test suites:
unitfunctionalacceptance
Tests can be executed by running
vendor/bin/codecept run --env php-builtin
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 ¶
The acceptance suite is configured in tests/Acceptance.suite.yml.
Acceptance tests (PhpBrowser) ¶
By default, acceptance tests use the PhpBrowser module and run against the built-in PHP web server started via the
php-builtin environment.
# run all tests with built-in web server
composer tests
# run acceptance tests only
vendor/bin/codecept run Acceptance --env php-builtin
Acceptance tests (WebDriver + Selenium) ¶
To run acceptance tests in a real browser, switch the acceptance suite to use the WebDriver module.
tests/Acceptance.suite.yml contains an example WebDriver configuration (commented).
- Download and start Selenium Server.
- Install the corresponding browser driver (for example. GeckoDriver or ChromeDriver).
- Update
tests/Acceptance.suite.ymlto enableWebDriverand disablePhpBrowser. - Run:
vendor/bin/codecept run Acceptance --env php-builtin
Code coverage support ¶
Code coverage is configured in codeception.yml. You can run your tests and collect coverage with the following command:
#collect coverage for all tests
vendor/bin/codecept run --coverage --coverage-html --coverage-xml --env php-builtin
#collect coverage only for unit tests
vendor/bin/codecept run Unit --coverage --coverage-html --coverage-xml --env php-builtin
#collect coverage for unit and functional tests
vendor/bin/codecept run Functional,Unit --coverage --coverage-html --coverage-xml --env php-builtin
You can see code coverage output under the tests/Support/output directory.
Composer scripts ¶
# run all tests
composer tests
# run static analysis
composer static
# run phpcs
composer phpcs
# run phpcbf
composer phpcbf
If you have any questions, please ask in the forum instead.
Signup or Login in order to comment.