Главная страница

Вкр. ВКР_Мехаев_И. Анализ предметной области и постановка задачи 8 1 Анализ предметной области 8 1 Органы дознания умвд россии по Вологод


Скачать 4.27 Mb.
НазваниеАнализ предметной области и постановка задачи 8 1 Анализ предметной области 8 1 Органы дознания умвд россии по Вологод
Дата07.03.2022
Размер4.27 Mb.
Формат файлаdocx
Имя файлаВКР_Мехаев_И.docx
ТипРеферат
#385938
страница6 из 8
1   2   3   4   5   6   7   8

3.2 Разработка компонентов системы

3.2.1 Установка Yii


Yii – это универсальны высокопроизводительный компонентный PHP фреймворк, позволяющий быстро создавать современные веб-приложения различной направленности.

Существует два способа установки, в рамках ВКР установка производится при помощи менеджера зависимостей Composer. Установка производится при помощи команды «composer create-project --prefer-dist yiisoft/yii2-app-basic basic». После скачивания необходимых файлов, запустится установка и по ее окончанию будет получена папка с проектом имеющая следующие папки: Config – основные настройки будущего приложения (подключение к базе данных и RBAC, включение ЧПУ и так далее); Controllers – контроллеры, отвечающие за обработку запроса и генерирование ответов; Models – представление объектов данных, правил и логики; Vendor - библиотеки; Views – внешний вид страниц; Widgets – установленные сторонние виджеты; Web – «точка входа» веб-приложения. Полученное приложение организовано по шаблону проектирования MVC, но помимо привычных моделей, контроллеров и видов(представлений) в Yii приложении реализованы такие сущности как:

  1. входные скрипты: это PHP скрипты, которые доступны напрямую конечному пользователю приложения. Они ответственны за запуск и обработку входящего запроса;

  2. приложения: это глобально доступные объекты, которые осуществляют корректную работу различных компонентов приложения и их координацию для обработки запроса;

  3. компоненты приложения: это объекты, зарегистрированные в приложении и предоставляющие различные возможности для обработки текущего запроса;

  4. модули: это самодостаточные пакеты, которые включают в себя полностью все средства для MVC. Приложение может быть организованно с помощью нескольких модулей;

  5. фильтры: это код, который должен быть выполнен до и после обработки запроса контроллерами;

  6. виджеты: это объекты, которые могут включать в себя представления. Они могут содержать различную логику и быть использованы в различных представлениях.

Рисунок 3.4 отображает общий вид структуры приложения созданного при помощи yii.


Рисунок 3.4 – Структурная схема приложения

3.2.2 Генерация кода при помощи gii


Для использования модуля автоматической генерации кода gii, необходимо внести изменения в файл web.php, находящийся в папке конфигурации проекта. Часть кода файла web.php, отвечающий за включение модуля gii представлен на рисунке 3.5.



Рисунок 3.5 – Код включающий gii

Модуль gii позволяет автоматически генерировать модели на основе таблиц в базах данных (если существуют связи между различными таблицами, gii учтет это и сгенерирует необходимый код), другие модули и расширения, формы, контроллеры, виды и так далее.

Например, для таблицы, хранящей данные о зарегистрированных пользователях, модулем gii был сгенерирован код модели представленный на рисунке 3.6. Также генерируются модели для таблиц дела cases, протоколы inquest и так далее.

Затем генерируются CRUD модули для данных моделей. При генерации CRUD генерируется не только контроллер, но и представления (view).




Рисунок 3.6 – Результат генерации модели User в модуле gii

3.2.3 Управление доступом к элементам системы


В разрабатываемой системе АРМ-Д, будет применятся политика избирательного управления доступом на основе ролей. Формирование ролей направлено на определение четких и понятных для пользователей компьютерной системы правил разграничения доступа. Разграничение доступа на основе ролей позволяет реализовать гибкие правила разграничения доступа, которые динамически изменяются во время работы компьютерной системы.

Это различие доступа является неотъемлемой частью многих современных компьютерных систем. Как правило, такой подход используется в системах защиты СУБД, а отдельные элементы реализуются в сетевых операционных системах. Подход, основанный на ролях, используется в системах, в которых четко определены функции пользователей.

В системе разрабатывается четкая система, включающая следующие роли:

  • пользователь – может просматривать, создавать и редактировать уголовные дела

  • модератор – имеет права пользователя, а также может удалять уголовные дела и просматривать статистику

  • админстратор – имеет полный доступ ко всем компонентам системы, в том числе и создание новых пользователей, модераторов и администраторов.

Для аутентификации пользователя, создано представление login, с использованием виджета ActiveForm были созданы поля ввода имени и пароля пользователя. Данные из представления передаются в модель LoginForm, где при помощи методов класса UserIdentity происходит валидация введенных данных. Код класса UserIdentity отображен на рисунке 3.7.

Пароли хранятся в зашифрованном виде. Шифрование происходит с использованием адаптивной криптографической хэш-функции bcrypt.

В базе данных создаются таблицы для хранения данных:

  • itemTable: таблица для хранения авторизационных элементов

  • itemChildTable: таблица для хранения иерархии элементов

  • assignmentTable: таблица для хранения назначений элементов авторизации

  • ruleTable: таблица для хранения правил.

После, при помощи инструмента gii, создается CRUD модуль для создания, редактирования и удаления пользователей.




Рисунок 3.7 – Код класса UserIdentity

3.2.4 Ввод даты


Во время заполнения форм, пользователь столкнется с необходимость ввода даты, поскольку такие данные требуются для генерации печатных документов. В yii отсутствуют стандартные поля ввода дат решено использовать сторонний виджет, разработанный для данного фреймворка.

Установка виджета в проект производится при помощи composer’а, вводом команды «php composer.phar require kartik-v/yii2-widget-datepicker "@dev"». Затем, в основном конфигурационном файле проекта web.php, проводится его подключение и настройка формата даты для сохранения и загрузки из базы. Код подключения и настройки виджета отображен на рисунке 3.8



Рисунок 3.8 – Код подключения и настройки виджета

Для добавления виджета в форму, необходимо вписать такую строку: $form->field($model, 'open_date')->widget(DateControl::className()). Теперь вместо поля ввода текста будет появлятся календарь с возможностю выбора даты, как показано на рисунке 3.9.



Рисунок 3.9 – Поле выбора даты открытия дела

Теперь необходимо настроить отображение введенных дат в системе, так как дата в базе хранится в «международном» формате гггг.мм.дд, то есть в обратном порядке относительно привычного для России формата. Для этого в файле web.php, необходимо вписать следующее:

'formatter'=>['locale'=>'ru-Ru', 'dateFormat'=>'php:d.m.Y',]

Formatter – это класс, преобразующий данные в человеко-понятный формат. Он предоставляет набор методов, используемых для форматирования дат, времени, чисел и так далее. В данном проекте, используется лишь для определения формата даты.

Теперь, необходимо четко определить тип данных в виджетах отображения и дата, ранее введенная в базу, будет отображаться в формате дд.мм.гггг.

3.2.5 Подключение ЧПУ


ЧПУ – человеко-понятные url или SEF URL (search engines friendly url), то есть адреса ссылок будут иметь осознанный текст. Хоть система, разрабатываемая в рамках ВКР и не требует наличия подобных ссылок, они помогут во время разработки. В реальных же проектах, на сегодняшний день без использования подобных ссылок не обойтись.

Для подключения ЧПУ в корневой папке проекта создается файл «.htaccess», его код показан на рисунке 3.10.



Рисунок 3.10 – Код файла «.htaccess»

Содержимое файла «.htaccess» определяет правила, которые позволяют избавится от слова «web» в адресах http://diploma/web.

Далее в файле config/web.php прописывается поддержка ЧПУ, а также определяются правила, по которым будет происходить перенаправление. Правила перенаправления отображены на рисунке 3.11.

Правила из массива 'rules' читаются сверху вниз, поэтому универсальные правила пишутся в самом конце. Строка ''=>'site/' является универсальным правилом, то есть любое обращение по адресу http://diploma/action (под action подразумевается любой набор символов, состоящих из букв латинского алфавита и цифр) будет перенаправлено на http://diploma/site/action.



Рисунок 3.11 – Правила перенаправления ссылок
1   2   3   4   5   6   7   8


написать администратору сайта