First install composer.
- dependencies: curl and git
- download and verify composer-setup.php as described at composer homepage section download: https://getcomposer.org/download/
- install as /usr/local/bin/composer: php composer-setup.php –install-dir=/usr/local/bin –filename=composer
Second install yii as described here: http://www.yiiframework.com/doc-2.0/guide-start-installation.html)
- create an installation directory for the new yii project one level above document root, e.g. mystuff../
- run composer inside directory mystuff:
- composer global require “fxp/composer-asset-plugin:^1.3.1”
- composer create-project –prefer-dist yiisoft/yii2-app-basic ./
- If document root is defined as public_html ,and should be handled by yii framework, then run:
 ln -s yii/web/ public_html
 
If a database backend is used, yii code to handle tables can be auto generated using yii component gii.
- configure config/web.php according to manual: http://www.yiiframework.com/doc-2.0/guide-start-gii.html
- ensure that the web server has write (at least temporary) access to yii directory (chown -R www-data:www-data yii)
- create the database table and add comments to each table field (which will become labels for table edit form fields)
- create Model and CRUD using gii
- uncomment primary index field id in views/your_table_name/index.php
To create pdf output use plugin yii-mpdf: https://github.com/kartik-v/yii2-mpdf
- install plugin: composer require kartik-v/yii2-mpdf “1.0.1”
- add pdf config to components array in config/web.pdf
 (and do not forget to add at the beginning of web.php: use kartik\mpdf\Pdf;)
- for a view file views/your_table_name/view2.php add to controllers/yourTableNameController.php
 $pdf = Yii::$app->pdf;
 $pdf->content = $this->renderPartial(‘view2’, [‘model’ => $this->findModel($id)]);
 return $pdf->render();
- to change formatting in dataset detail view
- reference is source code: vendor/yiisoft/yii2/widgets/DetailView.php (and vendor/yiisoft/yii2/base/Widget.php):
 variables $template = ‘<tr><th{captionOptions}>{label}</th><td{contentOptions}>{value}</td></tr>’
 and $options = [‘class’ => ‘table table-striped table-bordered detail-view’]
- thus add in file views/your_table_name/view2.php:
 DetailView::widget([ ‘model’ => $model, ‘template’ => ‘your_settings’, ‘options’ => [your_settings], …
 
- reference is source code: vendor/yiisoft/yii2/widgets/DetailView.php (and vendor/yiisoft/yii2/base/Widget.php):
User authentication: http://www.yiiframework.com/doc-2.0/guide-security-authentication.html
(Plugin which allows user registration with email confirmation etc.: https://github.com/dektrium/yii2-user
https://code.tutsplus.com/tutorials/how-to-program-with-yii2-integrating-user-registration–cms-22974)
- the standard base template of yii includes user authentication with hardcoded passwords in file
 models/User.php
- some configuration is set in config/web.php: array components, sub array user, e.g. enableAutoLogin might be set to false
- views/site/login.php defines the login page, e.g. remember me might be removed
- example code to get name of logged in user:
 use app\models\User;
 if( !(Yii::$app->user->identity===null) ){echo User::findIdentity(Yii::$app->user->id)->username;} else {echo “guest”;}
- if( !(Yii::$app->user->identity===null) && ‘100’===Yii::$app->user->id){echo “is admin”;}
Configure Mailer
- set admin email address in config/params.php
- configure mailer in config/web.php as described in
 https://code.tutsplus.com/tutorials/how-to-program-with-yii2-integrating-user-registration–cms-22974
- edit contact form views/site/contact.php
Leave a Reply