Файл ресурсів «AppAsset.php»

<?php

namespace app\assets;

use fw\web\AssetBundle;

class AppAsset extends AssetBundle

{

public $basePath = '@webroot';

public $baseUrl = '@web';

public $css = [

   'css/site.css',

];

public $js = [

];

public $depends = [

   'fw\web\FwAsset',

  'fw\bootstrap\BootstrapAsset'

];

}

 



Файл контролеру «SiteController.php»

<?php

namespace app\controllers;

use Fw;

use fw\filters\AccessControl;

use fw\web\Controller;

use fw\web\Response;

use fw\filters\VerbFilter;

use app\models\LoginForm;

use app\models\ContactForm;

 

class SiteController extends Controller

{

public function behaviors()

{

   return [

       'access' => [

           'class' => AccessControl::className(),

           'only' => ['logout'],

           'rules' => [

               [

                   'actions' => ['logout'],

                   'allow' => true,

                   'roles' => ['@']

                ],

           ],

       ],

       'verbs' => [

           'class'=>VerbFilter::className(),


'actions' => [

               'logout' => ['post']

           ],

       ],

   ];

}

 

public function actions()

{

   return [

       'error' => [

           'class' => 'fw\web\ErrorAction',

       ],

       'captcha' => [

           'class' => 'fw\captcha\CaptchaAction',

           'fixedVerifyCode' => FW_ENV_TEST? 'testme': null,

       ],

   ];

}

 

public function actionIndex()

{

   return $this->render('index');

}

        

public function actionLogin()

{

   if (!Fw::$app->user->isGuest) {

       return $this->goHome();

    }


$model = new LoginForm();

   if ($model->load(Fw::$app->request->post()) && $model->login()) {

       return $this->goBack();

   }

   $model->password = '';

   return $this->render('login', [

       'model' => $model,

      ]);

}

        

public function actionLogout()

{

      Fw::$app->user->logout();

   return $this->goHome();

}

 

public function actionAbout()

{

   return $this->render('about');

}   

}



Файл моделі обробки форми авторизації «LoginForm.php»

<?php

namespace app\models;

use Fw;

use fw\base\Model;

 

class LoginForm extends Model

{

public $username;


public $password;

public $rememberMe = true;

private $_user = false;

 

public function rules()

{

   return [

       // username and password are both required

       [['username', 'password'], 'required'],

       // rememberMe must be a boolean value

       ['rememberMe', 'boolean'],

       // password is validated by validatePassword()

       ['password', 'validatePassword'],

   ];

}

   

public function validatePassword($attribute, $params)

{

   if (!$this->hasErrors()) {

      $user = $this->getUser();

       if (!$user ||!$user->validatePassword($this->password)) {

           $this->addError($attribute, 'Incorrect username or password.');

       }

   }

}

 

public function login()

{

   if ($this->validate()) {


return Fw::$app->user->login($this->getUser(), $this->rememberMe? 3600*24*30: 0);

   }

   return false;

}

public function getUser()

{

   if ($this->_user === false) {

       $this->_user = User::findByUsername($this->username);

   }

   return $this->_user;

}

}

?>



Файл моделі обробки контактної форми «ContactForm.php»

<?php

namespace app\models;

use Fw;

use fw\base\Model;

 

class ContactForm extends Model

{

public $name;

public $email;

public $subject;

public $body;

public $verifyCode;

 

 public function rules()

{


return [

       // name, email, subject and body are required

       [['name', 'email', 'subject', 'body'], 'required'],

       // email has to be a valid email address

       ['email', 'email'],

       // verifyCode needs to be entered correctly

       ['verifyCode', 'captcha'],

   ];

}

 

public function attributeLabels()

{

   return [

       'verifyCode' => 'Verification Code',

   ];

}

 

public function contact($email)

{

   if ($this->validate()) {

       Fw::$app->mailer->compose()

           ->setTo($email)

           ->setFrom([Fw::$app->params['senderEmail'] => Fw::$app->params['senderName']])

           ->setReplyTo([$this->email => $this->name])

           ->setSubject($this->subject)

           ->setTextBody($this->body)

           ->send();

       return true;

   }


return false;

}

}

?>



Файл представлення умовної стартової сторінки «start_page.php»

<?php

$this->title = 'Назва сторінки';

?>

<div class="site-index">

<div class="jumbotron">

   <h1>Вітаємо!</h1>

   <p class="lead">Стартова сторінка початку роботи.</p>

</div>

<div class="body-content">

   <div class="row">

       <div class="col-lg-12">

           <h2>Назва</h2>

           <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et

               dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip

               ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu

               fugiat nulla pariatur.</p>

       </div>

   </div>

</div>

</div>

 



Файл представлення форми авторизації «login.php»

<?php

use fw\helpers\Html;

use fw\bootstrap\ActiveForm;

$this->title = 'Login';

$this->params['breadcrumbs'][] = $this->title;

?>

<div class="site-login">

<h1><?= Html::encode($this->title)?></h1>

<p>Please fill out the following fields to login:</p>

<?php $form = ActiveForm::begin([

   'id' => 'login-form',

   'layout' => 'horizontal',

   'fieldConfig' => [

       'template' => "{label}\n<div class=\"col-lg-3\">{input}</div>\n<div class=\"col-lg-8\">{error}</div>",

       'labelOptions' => ['class' => 'col-lg-1 control-label'],

   ],

]);?>

   <?= $form->field($model, 'username')->textInput(['autofocus' => true])?>

   <?= $form->field($model, 'password')->passwordInput()?>

   <?= $form->field($model, 'rememberMe')->checkbox([

       'template' => "<div class=\"col-lg-offset-1 col-lg-3\">{input} {label}</div>\n<div class=\"col-lg-8\">{error}</div>",

   ])?>

      <div class="form-group">

       <div class="col-lg-offset-1 col-lg-11">

           <?= Html::submitButton('Login', ['class' => 'btn btn-primary', 'name' => 'login-button'])?> </div>


</div>

<?php ActiveForm::end();?>

<div class="col-lg-offset-1" style="color:#999;">

   You may login with <strong>admin/admin</strong> or <strong>demo/demo</strong>.<br>

   To modify the username/password, please check out the code <code>app\models\User::$users</code>.

</div>

</div>

 

 




Додаток В

Затверджено:                             Зав. Кафедрою ПЗАС, професор

                                                  ______________ Первунінський С.М.

 

РОЗРОБКА ФРЕЙМВОРКУ ДЛЯ АВТОМАТИЗАЦІЇ СТВОРЕННЯ WEB СИСТЕМ

 

Інструкція користувачеві

482.ЧДТУ.1918154 01 34 01

Листів 3

 

 

Розробник:     ________________________          Гребенюк І. А.

                                                                                                     

 

 

Черкаси, 2019

 



Загальний опис фреймворку

Розроблений фреймворк дозволяє створювати клієнт-серверні WEB системи. До можливостей фреймворку належать:

- методи безпеки;

- представлення;

- контролери;

- віджети;

- компоненти;

- Bootstrap;

- JQuery.

Вимоги до системи

Для початку роботи з фреймворком на персональному комп’ютері (ПК), потрібно встановити WEB сервер (наприклад, OpenServer). Для роботи з фреймворком на хостингу, потрібно завантажити файли фреймворку в каталог хостингу, який містить ім’я WEB системи, яка буде розроблятись. Для роботи також знадобиться редактор коду (наприклад, PHPStorm) та браузер (наприклад, Google Chrome). Для стабільної роботи з фреймворком на ПК необхідно:

- оперативна пам’ять: 2 Гб;

- вільне об’єм пам'ять на накопичувачі: 100 Мб;

- відеокарта: дискретна або інтегрована;

- мережевий адаптер;

Взаємодія з результатом розробки виконується через браузер. Для серверної частини підійде ОС на базі Linux, Windows або MacOS. Для завантаження файлів фреймворку на сервер рекомендується використовувати FileZilla, який можна завантажити за посиланням:

- https://filezilla.ru/

Для роботи з базою даною (БД) потрібно встановити MYSQL. Файл конфігурації доступу до БД знаходиться в файлі config/db.php


Нижче показано перелік каталогів, які розміщені в корені фреймворку:

– Config – каталог розміщення конфігураційних файлів системи;

– Assets – каталог розміщення файлів підключення шаблонів (наприклад, підключає style.css до всіх сторінок WEB системи);

– Controllers – каталог розміщення файлів роботи контролерів;

– Mail – каталог розміщення файлів роботи з електронною поштою;

– Models – каталог розміщення файлів роботи моделей;

– Vendor – каталог розміщення файлів інших розробників (наприклад, bootstrap – фреймворк CSS стилів);

– Views – каталог розміщення файлів представлень сторінок WEB системи;

– Web – каталог розміщення файлів, такі як картинки, власні CSS та javascript файли, які підключаються до окремих сторінок WEB системи.

 




Додаток Г

Затверджено:                            Зав. Кафедрою ПЗАС, професор

                                                  ______________ Первунінський С.М.

 

РОЗРОБКА ФРЕЙМВОРКУ ДЛЯ АВТОМАТИЗАЦІЇ СТВОРЕННЯ WEB СИСТЕМ

 

Графічні матеріали

482.ЧДТУ.1918154 01 90 01

Листів 5

 

 

Розробник:     ________________________          Гребенюк І. А.

                                                                                                     

 

 

Черкаси, 2019

 


Рис. Г.1 – Діаграма взаємодії MVC

 

Рис. Г.2 – Структурна схема HMVC

 


Рис. Г.3 – Умовна головна сторінка фреймворку

Рис. Г.4 – Діаграма структури WEB системи

 


Рис. Г.5 – Життєвий цикл запиту

 

Рис. Г.6 – Приклад використання ролей в WEB системі

Рис. Г.7 – Представлення entry-confirm.php з відображенням даних

 


Рис. Г.8 – Представлення entry.php з подією відправлення пустої форми

 

 






Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: