Skip to content

Домашнее задание к уроку №10 курса GeekBrains "Laravel. Глубокое погружение"

Notifications You must be signed in to change notification settings

agb2008/laravel-demo

Repository files navigation

Build Status Total Downloads Latest Stable Version License

О проекте LARAVEL-DEMO

Домашнее задание к уроку №10 курса GeekBrains "Laravel. Глубокое погружение".

Домашнее задание к уроку №10

  1. Оптимизировать использование html-редактора, чтобы его исходники хранились в системе.

  2. Создать миграцию для добавления в базу новой таблицы resources. Она будет хранить информацию о ресурсах, с которых необходимо забирать новости. Добавить интерфейс для редактирования и добавления данных в эту таблицу.

  3. Реализовать алгоритм получения новых новостей из ресурсов, сохраненных в таблице resources, с добавлением нужной информации в таблицу news.

  4. Используя очереди, реализовать алгоритм параллельного запроса информации из сторонних сервисов с выводом ее пользователю в браузер.

     Задания выполнены. Поключен редактор CKEditor 4.х и добавлена возможность редактирования новостей (раздел Articles) с использованием
     этого редактора. Вывод основной части информации идет с использованием html тэгов. Реализована возможность получения информации с 
     новостных ресурсов Яндекса с использование очередей. Информация сохраняется в базе данных. 
     Подготовлен прототип таблицы для хранения ссылок на ресурсы с новостями. При записи новостей в базу проводится проверка на существование
     новости (раздел News).
     Подготовлен функционал к реализации редактирования сторонних новостей. Необходимо добавить сохранение id пользователя, который парсит
     источники новостей для того, чтобы только он мог их редактировать. Без регистрации/авторизации на сайте основная часть функционала не
     доступна.
     
     Произведены изменения в структуре базы данных. Выложен новый дамп базы. 
     
     При работе с очередями использовалась БД Redis - nativew windows port v. 5.10 x64
    

Домашнее задание к уроку №9

  1. Добавить провайдера для работы с Facebook.

  2. Настроить авторизацию через Facebook.

  3. Реализовать возможность получения информации из любых открытых сторонних сервисов.

  4. Реализовать сохранение полученных данных о новостях в БД.

     Все задания выполнены. Добавлена возможность авторизации не только через Facebook, но и GitHub, Google, Twitter (опционально).
     Параметры подключения задаются в .env файле. Количество провайдеров может быть расширено при необходимости. Метод достаточно
     универсальный. 
     
     Реализована загрузка новостей через парсер с сайта Яндекс, раздел "https://news.yandex.ru/computers.rss"
     Если пользователь авторизован, то он может сохранить заинтересовавшую его новость в базе данных.
     В гостевом доступе можно просто просмотреть новости. Раздел новостей можно легко изменить.
     
     Todo: необходимо продумать систему проверки данных новостей при сохранении (на отсутствие дубликатов), сейчас это происходит на уровне
           базы данных, возникает ошибка, если новость с таким же title уже существует.
           В разделе авторизации опционально можно предусмотреть дополнительную обработку ошибок в случае если пользователь зарегистрировался 
           с помощью номера телефона, а не e-mail'a или он не указал имя в профиле. 
    

Домашнее задание к уроку №8

  1. Добавить формы регистрации и авторизацию пользователей.

     Задание выполнено в рамках прошлых обновлений и текущей модификации проекта. Используется система авторизации, графическая часть которой
     построена на базе CSS тулкита Bulma. Проведена интеграция с Laravel 8. Работает авторизация, создание пользователей и сервис восстановления пароля.
     Добавлена опция позволяющая пользователю редактировать свои публикации на странице списка публикации (вслучае если это публикация пользователя,
     будет отображаться кнопка Edit) Для публикаций, созданных другими пользователями такая кнопка отображаться не будет. 
     На домашней странице добавлены ссылки (кнопки) на создание новой публикации и вывода списка всех своих публикаций (расширен контроллер Articles)
    

Домашнее задание к уроку №7

  1. Добавить валидирование данных, которые получены из форм, созданных на предыдущих уроках.

  2. Используя знания, полученные на уроке, реализуйте вывод сообщений об ошибках валидации полей форм (из задания 1).

  3. Добавьте тесты — минимум по две проверки на каждую форму.

     Выполнены задания 1 и 2 в рамках прошлых ДЗ и текущей версии ДЗ. Пункт 3 выполнен частично из-за проблем с имиджем Docker и WSL2
     под Windows 10 x64. Тесты были проведены в другом проекте. Постараюсь добавить их в последующие релизы. Проблем с проведением не
     возникло, но не удалось заставить работать Laravel 8 Dusk в чистом Windows 10 x64. 
    

Домашнее задание к уроку №6

  1. Добавить модели.

  2. Реализовать изменения в приложении согласно полученной информации.

     Все задания выполнены в рамках ДЗ №1-№6. Проект был изначально построен на основе работы с базой
     данных и eloquent ORM.
    

Домашнее задание к уроку №5

  1. Создать БД.

  2. Создать таблицы для пользователей.

  3. Продумать структуру сохранения данных выбранного проекта и реализовать ее.

  4. Сделать миграции для созданных таблиц.

  5. Подключиться и вывести информацию из БД

     Все задания выполнены в рамках ДЗ №1-№5. Добавлен ArticleSeeder для 
     генерации данных в таблице "articles"
    

Домашнее задание к уроку №4

  1. Создать формы для получения данных от пользователя: a) Форму обратной связи — она должна содержать следующие элементы: Поле для ввода имени пользователя. Поле для ввода комментария / отзыва по работе проекта. b) Форму заказа на получение выгрузки данных из какого-либо источника. Эта форма нужна для курсового проекта — агрегатора. Она должна содержать поля для ввода: Имени заказчика. Номера телефона. Email-адреса. Информации о том, что он хочет получить.

     Выполнено. Первая форма доступна по адресу /forms или для создания новой записи /froms/create
                Вторая форма доступна по адресу /request_form или для создания новой записи /request_form/create
    
  2. Добавить тесты для проверки всех маршрутов, созданных в этом и предыдущем уроках. Всего в тестах должно быть не менее 10 проверок. Разнообразие в них приветствуется.

     Выполнено.
    

Домашнее задание к уроку №3

  1. Ознакомиться с документацией по работе с шаблонами в laravel.

     Выполнено.
    
  2. Добавить в проект шаблоны согласно подготовленному дизайну.

     Выполнено в рамках первого ДЗ №1-3. Подготовлены шаблоны на базе CSS фреймворка Bulma
     (https://bulma.io/) вместо стандартного Bootstrap 4. Реализована возможность авторизации
     пользоватей (стандартная опция Laravel 8.x - интерфейст страниц авторизации так же переделан
     для использования Bulma v. 0.9.1
     Обновлен дамп базы данных для использования с этим проектом. 
     Реализована опция вывода новостей с учетом тегов, при выводе новости, для которой было определены 
     тэги при нажатии на любой из них будут выведены все новости с таким же тегом.
    

Домашнее задание к уроку №2

  1. Добавить в проект несколько контроллеров. Создать минимум 4 страницы. К примеру:

a. Страницу приветствия. b. Страницу категорий новостей. c. Страницу вывода новостей по конкретной категории. d. Страницу вывода конкретной новости. e. Страницу авторизации. f. Страницу добавления новости.

    Выполнено в рамказ ДЗ №1 и обновлено в рамках текущего ДЗ
  1. Выбрать и сверстать дизайн для станиц приложения. Он не должен быть сложным, но обязательно должен содержать в себе 4 блока: блок шапки сайта, подвала, место вывода контента и область меню.

     Выполнено в рамках первого ДЗ и обновлено в текущей версии. Работа шаблонов Blade переведена на
     использование Bulma. Они готовы к интеграции системы авторизации (как стандартной на базе vue.js
     или bootstrap, так и возможно эти страницы будут переведены на использование Bulma).
    

Домашнее задание к уроку №1

  1. Настроить на локальной машине окружение для работы с фреймворком.

    Выполнено в нескольких вариантах:

     а) Локальная установка с помощью composer + mysql из OpenServer
     б) WSL2 + Docker (конфликтует с локально установленным VirtualBox, приходится переключать
                       режимы работы: для VirtualBox - bcdedit /set hypervisorlaunchtype off 
                                      для Docker - bcdedit /set hypervisorlaunchtype auto
                                      после изменения настроек требуется перезагрузка)
     в) Установка в локальной виртуальной машине Linux под Virtualbox
    
  2. Ознакомиться с документацией

     Выполнено
    
  3. Установить Laravel.

     Установлено, два варианта:
     
         а) composer create-project laravel/laravel example-app
         б) composer global require laravel/installer
            laravel new example-app
    
  4. Реализовать несколько страниц с выводом какой-либо информации.

     Выполнено, проект laravel-demo. Реализован вывод базовой страницы (/), страницы с обзором
     последних публикаций (/about), вывода списка публикаций (/articles) отсортированных по дате
     публикации от новых к более старым, просмотра конкретной публикации по выбору ее со страницы
     /about или /articles. Возможен просмотр публикации по номеру, например: /articles/1
     Поддерживается режим редактирования уже созданных сообщений, например: /articles/1/edit
     и режим создания новых сообщений: /create
     В режиме создания новых сообщений выполняется базовая проверка заполненых полей. 
     Дамп базы данных приложен в файле: laravel-demo.sql## Использованное окружение
    

Laravel 8.27.0, PHP 7.4.5, MySQL 8.0, PhpStorm 2020.3.2 на платформе Windows 10 Pro x64.

Выполнено

  • Алексей Богданов, 11 февраля 2021 года

Todo

Переделать используемый HTML (blade) шаблон с использованием Bulma, как это уже реализовано для форм создания и редактирования публикаций..

License

The Laravel framework is open-sourced software licensed under the MIT license.

About

Домашнее задание к уроку №10 курса GeekBrains "Laravel. Глубокое погружение"

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published