====== Yii2 - gii and CRUDing ======
===== Enable gii =====
You can access gii via http://somehost/path/to/frontend/web/?r=gii
However if you are accessing gii from a remote client, you will have to enable that IP address.
The yii2 manual states to add this configuration to frontend/config/main-local.php:
'gii' => [
'class' => 'yii\gii\Module',
'allowedIPs' => ['127.0.0.1', '::1', '192.168.0.*', '192.168.178.20'] // adjust this to your needs
],
However, this did not work and I updated ''vendor/yiisoft/yii2-gii/Module.php'' to include the remote IP as ''public $allowedIPs = ['127.0.0.1', '::1', '192.168.1.*'];''
Let's setup database before we start using gii.
===== Enable Debug =====
While you are enabling gii, enable debug as well by updating ''vendor/yiisoft/yii2-debug/Module.php'' similar to updating gii
Access debug via URL: http://somehost/path/to/frontend/web/?r=debug
===== Database =====
Create a MySQL database
* Database
* User and set permissions for user to access above Database
* Database Objects (tables)
Setup [[tech:others:sample_database|sample]] tables
Update database settings in ''common/config/main-local.php''
===== Work gii / Use the generator =====
The current release has a bug. Create a directory ''search'' under the model directory before using gii.
Browse to http://somehost/path/to/frontend/web/?r=gii
==== Model Generator ====
Set the following
^Tablename| exa_*|
^Modelname| (blank)|
Output:
generated models/Departments.php
generated models/Employees.php
==== CRUD Generator ====
Set the following
^Model Class| app\models\Employees|
^Search Model Class| app\models\search\EmployeesSearch|
^Controller Class| app\controllers\EmployeesController|
Output:
controllers/EmployeesController.php
models/search/EmployeesSearch.php
views/employees/_form.php
views/employees/_search.php
views/employees/create.php
views/employees/index.php
views/employees/update.php
views/employees/view.php
Repeat for Departments
==== Bug ====
After generation, in the frontend/controllers directory, for both ''EmployeesController.php'' & ''DepartmentsController.php''
change ''namespace app\controllers;''
to ''namespace frontend\controllers;''
===== Test Generated code =====
Browse to: http://somehost/path/to/frontend/web/?r=employees
and
to: http://somehost/path/to/frontend/web/?r=departments