Создание Доски объявлений с использованием фреймворка YII2.
Автор: Жданов В.В.
Данный курс - практикум по созданию сайта с использованием фреймворка YII2.
Цель: создание небольшого сайта с нуля до "коробочного" варианта, готового к размещению на хостинге.
Теории здесь не много, больше практической работы по принципу: "произвел действие - получил результат".
Также по максимуму используем функционал фреймворка YII2.
Программируем - и кайфуем!
| # | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
|---|---|---|---|---|---|
| 1 |
О проекте и про инструменты
|
|
|||
|
На этом уроке мы рассмотрим тематику разработки и настроим инструменты |
|||||
| 2 |
Создание проекта YII2
|
1 тест |
|||
|
На этом уроке мы создадим проект нового сайта, установим YII2 и запустим новый сайт на нашем локальном домене |
|||||
| 3 |
Комфортная конфигурация
|
2 теста |
|||
|
На этом уроке мы настроим удобные для человека ссылки и поменяем название сайта при помощи настроек config/web.php |
|||||
| 4 |
Схема базы данных
|
|
|||
| На этом уроке мы создадим схему базы данных для нашего проекта | |||||
| 5 |
Подключение к базе данных пользователя и миграция пользователей
|
1 тест |
|||
|
На этом уроке мы создадим базу данных, подключим ее к нашему проекту и создадим таблицу пользователей при помощи механизма миграций |
|||||
| 6 |
Аутентификация - захешированный пользователь из БД
|
1 тест |
|||
| На этом уроке мы подкорректируем модель User и реализуем аутентификацию на сайте через базу данных | |||||
| 7 |
Информация о пользователе
|
|
|||
| На этом уроке создадим таблицу и модель Информация о пользователе | |||||
| 8 |
MVC - немного теории
|
1 тест |
|||
| На этом уроке мы рассмотрим теоретические основы работы MVC и создадим новый контроллер в нашем проекте | |||||
| 9 | MVC - информация о пользователе |
|
|||
| На этом уроке мы получим данные о пользователе из базы в представление | |||||
| 10 | Пользователь - кто зарегистрирован сейчас? |
1 тест |
|||
|
На этом уроке мы получим информацию о текущем зарегистрированном пользователе, а также сделаем рефакторинг кода |
|||||
| 11 | Новый пользователь - заготовка и меню |
|
|||
|
На этом уроке мы создадим действие и представление для добавления пользователя, а также добавим пункт меню "Регистрация" |
|||||
| 12 | Новый пользователь - модель для формы |
1 тест |
|||
| На этом уроке мы создадим модель параметров формы добавления пользователя | |||||
| 13 | Новый пользователь - дизайн формы начало |
|
|||
| На этом уроке мы зададим поля формы добавления пользователя | |||||
| 14 | Новый пользователь - дизайн формы: поля и колонки |
1 тест |
|||
|
На этом уроке мы добавим все поля формы, кнопку сохранения, а также разместим поля в две колонки |
|||||
| 15 | Новый пользователь - сохранение нового пользователя |
1 тест |
|||
| На этом уроке мы напишем алгоритм сохранения записи о пользователе и информации о нем | |||||
| 16 | Красивая аутентификация на сайте |
|
|||
| На этом уроке мы поменяем дизайн формы входа на сайт | |||||
| 17 | Что доступно Юпитеру? |
1 тест |
|||
| На этом занятии мы научимся управлять доступом к пунктам главного меню | |||||
| 18 | Объявления - создание базы и модели |
1 тест |
|||
| На этом уроке мы создадим таблицу bulletins при помощи миграций и сгенерируем для данной таблицы класс ActiveRecord | |||||
| 19 | Объявления - контроллер, представление и много записей |
1 тест |
|||
|
На этом уроке мы создадим контроллер и представление для работы с объявлениями, а также сделаем связь записей о пользователях и объявлениях типа "один-ко-многим" |
|||||
| 20 | Объявление - функциональный дизайн страницы |
|
|||
| На этом уроке мы сделаем дизайн страницы наших объявлений, который поможет нам работать с объявлениями в дальнейшем | |||||
| 21 | Объявление - ограничение доступа |
|
|||
| На этом уроке мы ограничим доступ неавторизированного пользователя к странице управления объявлениями, а также решим некоторые технические вопросы | |||||
| 22 | Объявление - поля для пользовательских форм |
|
|||
|
На этом уроке мы создадим класс BulletinsForm и определим, какие поля будут использоваться при создании объявления |
|||||
| 23 | Объявление - форма добавления объявлений |
1 тест |
|||
|
На этом уроке мы создадим представление для добавления объявлений и действие контроллера, запускающего это представление |
|||||
| 24 | Объявление - сохранение в черновик |
|
|||
| На этом уроке мы реализуем механизм сохранения нового объявления в черновик | |||||
| 25 | Объявление - список |
|
|||
| На этом уроке мы реализуем вывод сохраненных в базе объявлений в список | |||||
| 26 | Объявление - всё на публику |
1 тест |
|||
| На этом уроке мы сделаем наши объявления опубликованными | |||||
| 27 | Объявление - публикация на главной странице |
1 тест |
|||
| На этом уроке мы разместим наши опубликованные объявления на главной странице сайта | |||||
| 28 | Объявление - скрыть нельзя удалить |
|
|||
|
На этом уроке мы реализуем возможность помещать объявления в группу удаленных, восстанавливать их оттуда, а также отключать их просмотр |
|||||
| 29 | Объявление - статусный рефакторинг |
1 тест |
|||
| НА этом уроке мы сделаем рефакторинг методов работы со статусом объявлений | |||||
| 30 | Объявление - рефакторинг редактирования |
|
|||
| На этом уроке мы реализуем редактирование путем небольшого видоизменения функции добавления записи | |||||
| 31 | Объявление: запрос - в функцию & кнопка для изображений |
|
|||
| На этом уроке мы сделаем рефакторинг метода index и добавим кнопки для перехода в режим работы с изображениями | |||||
| 32 | Изображения - микс из миграций |
|
|||
| На этом уроке мы через механизм миграций создадим таблицу photo и добавим поле для аватары в таблицу bulletins | |||||
| 33 | Изображения - снова MVC |
|
|||
| На этом уроке мы создадим модель, контролер и представление для работы с фото | |||||
| 34 | Изображения - работа с моделью |
|
|||
| На этом уроке мы передадим модель нашего объявления в представление | |||||
| 35 | Работаем над ошибками - YII2 в помощь |
|
|||
| На этом уроке мы разберемся, как работать над ошибками и читать сигналы дебаггера YII2 | |||||
| 36 | Изображения - где живут картинки |
1 тест |
|||
| На этом уроке мы создадим папку для изображений, разместим там изображение по умолчанию, а также создадим универсальные параметры пути и изображения по умолчанию | |||||
| 37 | Изображения - модель формы |
|
|||
|
На этом уроке мы создадим модель PhotoForm для работы с изображениями |
|||||
| 38 | Изображение - загрузочное представление |
|
|||
|
На этом занятии мы создадим форму представления, через которое будет загружаться изображение |
|||||
| 39 | Изображение - загрузка файла на сайт |
1 тест |
|||
| На этом уроке мы реализуем алгоритм загрузки изображений на сайт | |||||
| 40 | ПРОМЕЖУТОЧНЫЙ ВИДЕО ОБЗОР |
без видео |
|||
|
Мы уже многое сделали на нашем видеокурсе, и автору очень важно узнать Ваше мнение о данном курсе и получить обратную связь в форме видео-презентации и ответов на вопросы. Сделай видео-презентацию своего сайта. |
|||||
| 41 | Изображение - сохранение пути в базу |
|
|||
| На этом уроке мы реализуем сохранение пути к файлу изображений в базу данных | |||||
| 42 | Изображение - управление картинками |
|
|||
| На этом уроке мы займемся дизайном - создадим выпадающее меню управления изображением | |||||
| 43 | Изображение - JS - немного теории и пижонства |
1 тест |
|||
| На этом уроке мы рассмотрим работу JS на yii2 | |||||
| 44 | Изображение - JS - глобализация |
|
|||
|
На этом уроке мы перенесем все скрипты JS в отдельный файл, а также реализуем открытие и скрытие элементов ввода информации |
|||||
| 45 | Изображение - JS - сохранение информации в базу |
1 тест |
|||
|
На этом уроке мы научим нашу систему сохранять информацию об изображениях в базу с использованием технологии ajax |
|||||
| 46 | Изображение - JS - извлечение методом ajax |
|
|||
| На этом уроке мы научим ajax получать информацию об изображениях из базы | |||||
| 47 | Изображение - аватарка - вывод на главной странице |
|
|||
|
На этом уроке мы реализуем вывод главных изображений каждого объявления (далее - аватарки) на главной странице |
|||||
| 48 | Изображение - аватарка - работа над ошибками связей |
|
|||
|
На данном уроке мы исправим ошибки вывода фотографий, очистим базу и заново загрузим в нашу базу фотографии в одно из объявлений |
|||||
| 49 | Изображение - аватарка - как стать главной |
|
|||
| На этом уроке мы создадим код, делающий любое фото главным | |||||
| 50 | Изображение - удаление - ни шагу без подтверждения! |
|
|||
|
На этом уроке мы реализуем всплывающее окно подтверждения действия и протестируем результаты выбора различных вариантов |
|||||
| 51 | Изображение - удаление - удаление файла и записи |
|
|||
| На этом уроке мы реализуем удаление файлов изображений и записей о них из базы данных | |||||
| 52 | Главная страница - подробности - ссылки и заготовка представлени |
|
|||
|
На этом уроке мы создадим ссылки для объявлений на главной странице и заготовку представления для подробного вывода информации объявления |
|||||
| 53 | Главная страница - подробности - больше подробностей |
|
|||
| На этом уроке мы выведем максимум информации на страницу подробностей объявления | |||||
| 54 | Главная страница - подробности - расширяя информацию |
1 тест |
|||
|
На этом уроке мы внесем в наш код изменения, которые позволят сохранять объявления с большим количеством информации |
|||||
| 55 | Главная страница - оформление - дизайн объявления |
|
|||
| На этом уроке мы зададим стиль дизайна объявления | |||||
| 56 | Главная страница - оформление - дизайн элементов базовой страницы |
1 тест |
|||
| На этом уроке мы выведем информацию о себе в элементе footer и сделаем главное меню стильным и красивым | |||||
| 57 | Главная страница - оформление - ловим цвет пикселя |
|
|||
|
На этом уроке мы рассмотрим использование инструментов определения цвета пикселя (Пипетка) |
|||||
| 58 | Главная страница - оформление - смотрим все изображения |
|
|||
| На этом уроке мы реализуем просмотр всех изображений объявления "не хуже, чем на Avito" | |||||
| 59 | Главная страница - оформление - стильный логотип |
|
|||
| На этом уроке мы реализуем вывод логотипа в иконку проекта и в пункт меню перехода на главную страницу | |||||
| 60 | Главная страница - оформление - оповещения через баннер |
|
|||
| На этом уроке мы создадим баннер для оповещений, новостей | |||||
| 61 | Разделы (темы) - немного теории |
|
|||
| На этом уроке мы рассмотрим вопрос тематик объявлений на нашем сайте, а также составим план (структуру) таблицы тем Themes и связующей таблицы ThemesBulletins | |||||
| 62 | Разделы (темы) - миграции с внешними ключами |
|
|||
| На этом уроке мы создадим миграции таблиц themes и themesbulletins, сами эти таблицы и их модели ActiveRecord с внешними связями | |||||
| 63 | Обратная связь - мозговой штурм - внештатные ситуации |
|
|||
|
В данном уроке попрошу Вас выполнить небольшую самостоятельную работу и дать обратную связь. |
|||||
| 64 | Разделы (темы) - вывод тем в объявлении |
|
|||
| На этом уроке мы реализуем вывод тем на странице объявления | |||||
| 65 | Разделы (темы) - меню тематик |
|
|||
| На этом уроке мы реализуем вывод ссылок на темы на главной странице и подсчет объявлений в каждой теме | |||||
| 66 | Разделы (темы) - тематические выборки |
|
|||
| На этом уроке мы реализуем выбор объявлений по темам и вывод их на основную страницу | |||||
| 67 | Разделы (темы) - полезные переходы |
|
|||
| На этом уроке мы реализуем возвращение со страницы объявлений на предыдущую страницу, а также переходы по темам объявления по типу хештегов | |||||
| 68 | Разделы (темы) - администрирование - теория и заготовки |
|
|||
| На этом уроке мы создадим контроллер для администрирования разделов (тем) и представление index | |||||
| 69 | Разделы (темы) - администрирование - все темы в таблицу |
|
|||
| На этом уроке мы выведем существующие темы в таблицу и зададим им элементы управления | |||||
| 70 | Разделы (темы) - администрирование - подтверждение удаления |
|
|||
| На этом уроке мы реализуем алгоритм подтверждения удаления и создадим соответствующее представление | |||||
| 71 | Разделы (темы) - администрирование - удаление разделов и чистка связей |
|
|||
| На этом уроке мы окончательно удалим раздел, а перед этим удалим все его связи с объявлениями | |||||
| 72 | Разделы (темы) - администрирование - Обычный ThemesForm |
|
|||
| На этом уроке мы создадим модель ThemesForm, заготовку действия Add в контроллере Themes и представление под него | |||||
| 73 | Разделы (темы) - исправление подсчета и отображение текущей темы |
|
|||
|
Hа этом уроке мы исправим ошибку подсчета, обнаруженную в процессе прохождения курса, а также отобразим текущую тему, по которой выборка объявлений, в баннере |
|||||
| 74 | Разделы (темы) - администрирование - "темное" представление |
|
|||
| На этом уроке мы создадим поля для редактирования или добавления темы в представлении themes\add | |||||
| 75 | Разделы (темы) - администрирование - волшебный выпадающий список |
1 тест |
|||
| На этом уроке мы создадим выпадающий список выбора родительской темы | |||||
| 76 | Разделы (темы) - администрирование - сохранение темы |
|
|||
| На этом уроке мы реализуем сохранение добавляемых и редактируемых тем | |||||
| 77 | Разделы (темы) - администрирование - рефакторинг и валидация |
|
|||
| На этом уроке мы сделаем рефакторинг нашего представления add и валидацию данных формы ThemesForm | |||||
| 78 | Связи объявлений и тем - заготовка |
|
|||
|
На этом уроке мы создадим действие в контроллере BulletinsController и представление, которые помогут нам работать со связями объявлений и тем |
|||||
| 79 | Связи объявлений и тем - добавление новой темы |
|
|||
| На этом уроке мы научим нашу систему добавлять новую тему в объявление (делать связь темы и объявления) | |||||
| 80 | Связи объявлений и тем - темы, которых не было |
1 тест |
|||
| На этом уроке мы научим нашу систему выводить в список добавляемых в объявление тем только те, которые не прикреплены к нашему объявлению | |||||
| 81 | Связи объявлений и тем - темы, которых не будет |
|
|||
| На этом уроке мы научим нашу систему удалять из объявлений темы, к которым наше объявление привязывать не надо | |||||
| 82 | Глобальный поиск - поле поиска в меню |
|
|||
| На этом уроке мы добавим поле поиска в навигационное меню сайта, а также решим вопрос с активными пунктами меню. | |||||
| 83 | Глобальный поиск - ищем глобально |
|
|||
| На этом уроке мы создадим алгоритм поиска по вводимому в поле search контенту | |||||
| 84 | Расширенный поиск - группировка пунктов главного меню |
|
|||
|
На этом уроке мы сгруппируем пункты главного меню в подразделы, и сделаем в нем ссылку на страницу расширенного поиска |
|||||
| 85 | Расширенный поиск - заготовки и план |
|
|||
|
На этом уроке мы набросаем план будущей страницы расширенного поиска, а также создадим действие контроллера и заготовку представления расширенного поиска |
|||||
| 86 | Расширенный поиск - стили и форма |
|
|||
| На этом уроке мы внесем исправления в стили субменю и сделаем модель формы расширенного поиска | |||||
| 87 | Расширенный поиск - дизайн текстовых полей и кнопки |
|
|||
|
На этом уроке мы прокачаем навыки дизайна текстовых полей, создания активной формы в представлении, а также создания кнопки через хелперы yii2 |
|||||
| 88 | Расширенный поиск - цена - выбор варианта |
|
|||
| На этом уроке мы создадим систему управления выбором варианта поиска по цене | |||||
| 89 | Расширенный поиск - цена - невидимые поля |
|
|||
| На этом уроке мы создадим невидимые блоки с полями поиска цены, которые становятся видимыми при нажатии определенного пункта навигатора | |||||
| 90 | Расширенный поиск - дата публикации - виджет извне |
|
|||
|
На этом уроке мы установим в наш проект компонент jui от стороннего разработчика и создадим календарики для выбора дат |
|||||
| 91 | Расширенный поиск - результаты выборки - частичное представление |
|
|||
| На этом уроке мы рассмотрим возможность использования частичного представления в yii2-проекте и выведем в частичное представление карточку объявления | |||||
| 92 | Расширенный поиск - генератор поиска - возвращение к SQL-запросу |
|
|||
|
На этом уроке мы создадим генератор отчета, используя работу ActiveRecord фреймворка yii2 c sql-запросами, и включим в него поиск по текстовым полям формы расширенного поиска |
|||||
| 93 | Расширенный поиск - генератор поиска - ограничивающие даты |
|
|||
|
На этом уроке мы добавим в генератор отчета расширенного поиска выборку по датам публикации |
|||||
| 94 | Расширенный поиск - генератор поиска - три вида цены и один POST |
|
|||
|
На этом уроке мы реализуем различные варианты выборки объявлений по цене и добавим их в наш генератор расширенного поиска |
|||||
| 95 | Обратная связь - свой сайт объявлений |
без видео |
|||
|
И снова обратная связь.Подумаем самостоятельно и ответим на вопросы: |
|||||
| 96 | Расширенный поиск - генератор поиска - показать, что нужно |
|
|||
|
На этом уроке мы реализуем отображение той вкладки поиска по ценам, по которой производился поиск |
|||||
| 97 | Работа с документацией Yii2 |
|
|||
|
На этом уроке переходим на один из официальных сайтов по Yii2 и, пользуясь помощью документации, реализовываем одну из своих идей |
|||||
| 98 | Пользователи и роли - планирование ролевой модели |
|
|||
| На этом уроке мы составим ролевую модель пользователей нашего сайта | |||||
| 99 | Пользователи и роли - фильтры контроля доступа ACF - теория и эксперименты |
|
|||
| На этом уроке мы рассмотрим принципы работы фильтров контроля доступа ACF | |||||
| 100 | Пользователи и роли - фильтры контроля доступа ACF - фильтруем всё |
|
|||
| На этом уроке мы сами создадим метод behaviors() в BulletinsController и зададим нужные фильтры для действий контроллера | |||||
| 101 | Пользователи и роли - роли через RBAC - теория, установка и миграции |
|
|||
|
На этом уроке мы установим расширение RBAC, настроим подключение к RBAC и создадим базы для авторизации при помощи механизма миграции |
|||||
| 102 | Пользователи и роли - роли через RBAC - тесты и практика |
|
|||
|
На этом уроке мы создадим тестовые роли и разрешения, а также проверим работу контроллера согласно разрешений |
|||||
| 103 | Пользователи и роли - роли через RBAC - вносим действия в план |
|
|||
| На этом уроке мы добавим действия к ролям в нашей актуальной ролевой модели | |||||
| 104 | Пользователи и роли - роли через RBAC - реализация плана |
|
|||
| На этом уроке мы создадим актуальные роли и действия для пользователей нашего сайта | |||||
| 105 | Пользователи и роли - ACF+RBAC - ограничим доступ к темам |
|
|||
| На этом уроке мы реализуем ролевую модель для контроллера тем | |||||
| 106 | Пользователи и роли - управление ролями и привилегиями - контроллер и таблица ролей |
|
|||
| на этом уроке мы создадим контроллер и представление для управления ролями | |||||
| 107 | Пользователи и роли - управление ролями и привилегиями - форма добавления роли |
|
|||
|
На этом уроке мы создадим действие добавления роли и форму добавления роли |
|||||
| 108 | Пользователи и роли - управление ролями и привилегиями - сохранение и удаление роли |
|
|||
| На этом уроке мы реализуем сохранение роли, а также напишем алгоритм удаления роли | |||||
| Итого: 108 видеоуроков |
23 час. 33 мин. 25 тестов |
3 чел. | |||
| Финалисты: Жан, Николай Денисов, Tom . | |||||