<?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 з подією відправлення пустої форми