Yii 2 Advanced Application Template =================================== Yii 2 Advanced Application Template is a skeleton Yii 2 application best for developing complex Web applications with multiple tiers. The template includes three tiers: front end, back end, and console, each of which is a separate Yii application. The template is designed to work in a team development environment. It supports deploying the application in different environments. DIRECTORY STRUCTURE ------------------- ``` common config/ contains shared configurations models/ contains model classes used in both backend and frontend 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 backend assets/ contains application assets such as JavaScript and CSS config/ contains backend configurations controllers/ contains Web controller classes models/ contains backend-specific model classes runtime/ contains files generated during runtime views/ contains view files for the Web application web/ contains the entry script and Web resources frontend assets/ contains application assets such as JavaScript and CSS 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 web/ contains the entry script and Web resources vendor/ contains dependent 3rd-party packages environments/ contains environment-based overrides ``` REQUIREMENTS ------------ The minimum requirement by this application template that your Web server supports PHP 5.4.0. INSTALLATION ------------ ### Install from an Archive File Extract the archive file downloaded from [yiiframework.com](http://www.yiiframework.com/download/) to a directory named `advanced` that is directly under the Web root. Then follow the instructions given in "GETTING STARTED". ### Install via Composer If you do not have [Composer](http://getcomposer.org/), you may install it by following the instructions at [getcomposer.org](http://getcomposer.org/doc/00-intro.md#installation-nix). You can then install the application using the following command: ~~~ php composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-advanced advanced ~~~ GETTING STARTED --------------- 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. 1. Run command `init` to initialize the application with a specific environment. 2. Create a new database and adjust the `components['db']` configuration in `common/config/main-local.php` accordingly. 3. Apply migrations with console command `yii migrate`. 4. Set document roots of your Web server: - for frontend `/path/to/yii-application/frontend/web/` and using the URL `http://frontend/` - for backend `/path/to/yii-application/backend/web/` and using the URL `http://backend/` TESTING ------- 1. Install additional composer packages: * `php composer.phar require --dev "codeception/codeception: 1.8.*@dev" "codeception/specify: *" "codeception/verify: *"` 2. This application boilerplate use database in testing, so you should create three databases that are used in tests: * `yii2_advanced_unit` - database for unit tests; * `yii2_advanced_functional` - database for functional tests; * `yii2_advanced_acceptance` - database for acceptance tests; To make your database up to date, you can run in needed test folder `yii migrate`, for example if you are starting from `frontend` tests then you should run `yii migrate` in each suite folder `acceptance`, `functional`, `unit` it will upgrade your database to the last state according migrations. To be able to run acceptance tests you should configure your server to point doc_root to your new created application. For example if we use php builtin server, then all that is needed to do is run `php -S 127.0.0.1:8080` in main project directory - directory that contains frontend/backend/common/console directories. After that is done you should be able to run your tests, for example to run `frontend` tests do: * cd frontend; * ../vendor/bin/codecept build; * ../vendor/bin/codecept run; In similar way you can run tests for other application tiers - `backend`, `console`, `common`. You also can adjust you application suite configs and `_bootstrap.php` settings to use other urls and files, as it is can be done in `yii2-basic`.