Обучение C#

Формула программиста

основатель — Волосатов Евгений Витольдович
Open shop Доска объявлений

Доска объявлений

Создание Доски объявлений с использованием фреймворка YII2.

Автор: Жданов В.В.

Данный курс - практикум по созданию сайта с использованием фреймворка YII2.
Цель: создание небольшого сайта с нуля до "коробочного" варианта, готового к размещению на хостинге.
Теории здесь не много, больше практической работы по принципу: "произвел действие - получил результат".
Также по максимуму используем функционал фреймворка YII2.

Программируем - и кайфуем!



Список уроков | фото | видео

# Название видеоурока Видео / Тесты Решило Рейтинг Доступ
1 FREE О проекте и про инструменты 00:08:31
18 чел. ★ 4.9 Free
  На этом уроке мы рассмотрим тематику разработки и настроим инструменты

2 FREE Создание проекта YII2 00:13:49
16 чел. ★ 4.9 Free
  На этом уроке мы создадим проект нового сайта, установим YII2 и запустим новый сайт на нашем локальном домене

3 FREE Комфортная конфигурация 00:08:16
1 тест
16 чел. ★ 5 Free
  На этом уроке мы настроим удобные для человека ссылки и поменяем название сайта при помощи настроек config/web.php
4 FREE Схема базы данных 00:14:25
16 чел. ★ 5 Free
  На этом уроке мы создадим схему базы данных для нашего проекта
5 FREE Подключение к базе данных пользователя и миграция пользователей 00:13:36
1 тест
16 чел. ★ 5 Free
  На этом уроке мы создадим базу данных, подключим ее к нашему проекту и создадим таблицу пользователей
при помощи механизма миграций
6 FREE Аутентификация - захешированный пользователь из БД 00:16:58
15 чел. ★ 5 Free
  На этом уроке мы подкорректируем модель User  и реализуем аутентификацию на сайте через базу данных
7 FREE Информация о пользователе 00:13:28
15 чел. ★ 5 Free
  На этом уроке создадим таблицу и модель Информация о пользователе
8 FREE MVC - немного теории 00:12:09
15 чел. ★ 5 Free
  На этом уроке мы рассмотрим теоретические основы работы MVC и создадим новый контроллер в нашем проекте
9 MVC - информация о пользователе 00:09:33
15 чел. ★ 5 ^
  На этом уроке мы получим данные о пользователе из базы в представление
10 Пользователь - кто зарегистрирован сейчас? 00:09:22
15 чел. ★ 4.9 ^
  На этом уроке мы получим информацию о текущем зарегистрированном пользователе, а также сделаем рефакторинг кода
11 Новый пользователь - заготовка и меню 00:09:17
15 чел. ★ 5 ^
  На этом уроке мы создадим действие и представление для добавления пользователя,
а также добавим пункт меню "Регистрация"
12 Новый пользователь - модель для формы 00:15:43
15 чел. ★ 5 ^
  На этом уроке мы создадим модель параметров формы добавления пользователя
13 Новый пользователь - дизайн формы начало 00:16:37
15 чел. ★ 5 ^
  На этом уроке мы зададим поля формы добавления пользователя
14 Новый пользователь - дизайн формы: поля и колонки 00:09:17
14 чел. ★ 5 ^
  На этом уроке мы добавим все поля формы, кнопку сохранения, а также разместим поля в две колонки

15 Новый пользователь - сохранение нового пользователя 00:20:06
14 чел. ★ 5 ^
  На этом уроке мы напишем алгоритм сохранения записи о пользователе и информации о нем
16 Красивая аутентификация на сайте 00:07:37
14 чел. ★ 5 ^
  На этом уроке мы поменяем дизайн формы входа на сайт
17 Что доступно Юпитеру? 00:10:21
14 чел. ★ 5 ^
  На этом занятии мы научимся управлять доступом к пунктам главного меню
18 Объявления - создание базы и модели 00:09:51
14 чел. ★ 5 ^
  На этом уроке мы создадим таблицу bulletins при помощи миграций и сгенерируем для данной таблицы класс ActiveRecord
19 Объявления - контроллер, представление и много записей 00:13:46
14 чел. ★ 5 ^
  На этом уроке мы создадим контроллер и представление для работы с объявлениями,
а также сделаем связь записей о пользователях и объявлениях типа "один-ко-многим"
20 Объявление - функциональный дизайн страницы 00:14:17
13 чел. ★ 5 ^
  На этом уроке мы сделаем дизайн страницы наших объявлений, который поможет нам работать с объявлениями в дальнейшем
21 Объявление - ограничение доступа 00:09:25
13 чел. ★ 5 ^
  На этом уроке мы ограничим доступ неавторизированного пользователя к странице управления объявлениями, а также решим некоторые технические вопросы
22 Объявление - поля для пользовательских форм 00:09:44
13 чел. ★ 5 ^
  На этом уроке мы создадим класс BulletinsForm и определим, какие поля будут использоваться при создании объявления
23 Объявление - форма добавления объявлений 00:17:03
13 чел. ★ 5 ^
  На этом уроке мы создадим представление для добавления объявлений и действие контроллера, запускающего это представление
24 Объявление - сохранение в черновик 00:10:39
12 чел. ★ 5 ^
  На этом уроке мы реализуем механизм сохранения нового объявления в черновик
25 Объявление - список 00:18:42
12 чел. ★ 5 ^
  На этом уроке мы реализуем вывод сохраненных в базе объявлений в список
26 Объявление - всё на публику 00:12:16
12 чел. ★ 5 ^
  На этом уроке мы сделаем наши объявления опубликованными
27 Объявление - публикация на главной странице 00:15:27
12 чел. ★ 5 ^
  На этом уроке мы разместим наши опубликованные объявления на главной странице сайта
28 Объявление - скрыть нельзя удалить 00:12:40
12 чел. ★ 5 ^
  На этом уроке мы реализуем возможность помещать объявления в группу удаленных, восстанавливать их оттуда, а также отключать их просмотр
29 Объявление - статусный рефакторинг 00:08:45
12 чел. ★ 5 ^
  НА этом уроке мы сделаем рефакторинг методов работы со статусом объявлений
30 Объявление - рефакторинг редактирования 00:12:58
12 чел. ★ 5 ^
  На этом уроке мы реализуем редактирование путем небольшого видоизменения функции добавления записи
31 Объявление: запрос - в функцию & кнопка для изображений 00:09:52
12 чел. ★ 5 ^
  На этом уроке мы сделаем рефакторинг метода index и добавим кнопки для перехода в режим работы с изображениями
32 Изображения - микс из миграций 00:12:35
12 чел. ★ 5 ^
  На этом уроке мы через механизм миграций создадим таблицу photo и добавим поле для аватары в таблицу bulletins
33 Изображения - снова MVC 00:10:47
12 чел. ★ 5 ^
  На этом уроке мы создадим модель, контролер и представление для работы с фото
34 Изображения - работа с моделью 00:17:16
12 чел. ★ 5 ^
  На этом уроке мы передадим модель нашего объявления в представление
35 Работаем над ошибками - YII2 в помощь 00:13:03
12 чел. ★ 5 ^
  На этом уроке мы разберемся, как работать над ошибками и читать сигналы дебаггера YII2
36 Изображения - где живут картинки 00:15:34
12 чел. ★ 5 ^
  На этом уроке мы создадим папку для изображений, разместим там изображение по умолчанию, а также создадим универсальные параметры пути и изображения по умолчанию
37 Изображения - модель формы 00:11:10
12 чел. ★ 5 ^
  На этом уроке мы создадим модель PhotoForm для работы с изображениями
38 Изображение - загрузочное представление 00:15:37
12 чел. ★ 5 ^
  На этом занятии мы создадим форму представления, через которое будет загружаться изображение
39 Изображение - загрузка файла на сайт 00:17:29
12 чел. ★ 5 ^
  На этом уроке мы реализуем алгоритм загрузки изображений на сайт
40 ПРОМЕЖУТОЧНЫЙ ВИДЕО ОБЗОР без видео
9 чел. ★ 5 ^
  Мы уже многое сделали на нашем видеокурсе, и автору очень важно
узнать Ваше мнение о данном курсе и получить обратную связь
в форме видео-презентации и ответов на вопросы.

Сделай видео-презентацию своего сайта.
41 Изображение - сохранение пути в базу 00:14:17
9 чел. ★ 5 ^
  На этом уроке мы реализуем сохранение пути к файлу изображений в базу данных
42 Изображение - управление картинками 00:08:36
9 чел. ★ 5 ^
  На этом уроке мы займемся дизайном - создадим выпадающее меню управления изображением
43 Изображение - JS - немного теории и пижонства 00:16:29
9 чел. ★ 5 ^
  На этом уроке мы рассмотрим работу JS на yii2
44 Изображение - JS - глобализация 00:26:49
9 чел. ★ 5 ^
  На этом уроке мы перенесем все скрипты JS в отдельный файл, а также реализуем открытие и скрытие элементов ввода информации
45 Изображение - JS - сохранение информации в базу 00:22:42
9 чел. ★ 5 ^
  На этом уроке мы научим нашу систему сохранять информацию об изображениях в базу
с использованием технологии ajax

46 Изображение - JS - извлечение методом ajax 00:09:51
9 чел. ★ 5 ^
  На этом уроке мы научим ajax получать информацию об изображениях из базы
47 Изображение - аватарка - вывод на главной странице 00:15:26
9 чел. ★ 5 ^
  На этом уроке мы реализуем вывод главных изображений каждого объявления
(далее - аватарки) на главной странице
48 Изображение - аватарка - работа над ошибками связей 00:09:33
9 чел. ★ 5 ^
  На данном уроке мы исправим ошибки вывода фотографий, очистим базу и заново загрузим в нашу базу
фотографии в одно из объявлений
49 Изображение - аватарка - как стать главной 00:18:13
9 чел. ★ 5 ^
  На этом уроке мы создадим код, делающий любое фото главным
50 Изображение - удаление - ни шагу без подтверждения! 00:09:13
9 чел. ★ 5 ^
  На этом уроке мы реализуем всплывающее окно подтверждения действия
и протестируем результаты выбора различных вариантов
51 Изображение - удаление - удаление файла и записи 00:15:49
9 чел. ★ 5 ^
  На этом уроке мы реализуем удаление файлов изображений и записей о них из базы данных
52 Главная страница - подробности - ссылки и заготовка представлени 00:09:05
9 чел. ★ 5 ^
  На этом уроке мы создадим ссылки для объявлений на главной странице и заготовку представления для подробного вывода
информации объявления
53 Главная страница - подробности - больше подробностей 00:11:37
9 чел. ★ 5 ^
  На этом уроке мы выведем максимум информации на страницу подробностей объявления
54 Главная страница - подробности - расширяя информацию 00:15:15
9 чел. ★ 5 ^
  На этом уроке мы внесем в наш код изменения, которые позволят сохранять объявления с большим количеством информации
55 Главная страница - оформление - дизайн объявления 00:10:02
9 чел. ★ 5 ^
  На этом уроке мы зададим стиль дизайна объявления
56 Главная страница - оформление - дизайн элементов базовой страницы 00:11:44
9 чел. ★ 5 ^
  На этом уроке мы выведем информацию о себе в элементе footer и сделаем главное меню стильным и красивым
57 Главная страница - оформление - ловим цвет пикселя 00:06:00
9 чел. ★ 5 ^
  На этом уроке мы рассмотрим использование инструментов определения цвета пикселя (Пипетка)
58 Главная страница - оформление - смотрим все изображения 00:15:27
9 чел. ★ 5 ^
  На этом уроке мы реализуем просмотр всех изображений объявления "не хуже, чем на Avito"
59 Главная страница - оформление - стильный логотип 00:09:56
9 чел. ★ 5 ^
  На этом уроке мы реализуем вывод логотипа в иконку проекта и в пункт меню перехода на главную страницу
60 Главная страница - оформление - оповещения через баннер 00:11:19
8 чел. ★ 5 ^
  На этом уроке мы создадим баннер для оповещений, новостей
61 Разделы (темы) - немного теории 00:11:07
8 чел. ★ 5 ^
  На этом уроке мы рассмотрим вопрос тематик объявлений на нашем сайте, а также составим план (структуру) таблицы тем Themes и связующей таблицы ThemesBulletins
62 Разделы (темы) - миграции с внешними ключами 00:18:49
8 чел. ★ 5 ^
  На этом уроке мы создадим миграции таблиц themes и themesbulletins, сами эти таблицы и их модели ActiveRecord с внешними связями
63 Обратная связь - мозговой штурм - внештатные ситуации 00:09:19
7 чел. ★ 5 ^
  В данном уроке попрошу Вас выполнить небольшую самостоятельную работу и дать обратную связь.
64 Разделы (темы) - вывод тем в объявлении 00:16:29
7 чел. ★ 5 ^
  На этом уроке мы реализуем вывод тем на странице объявления
65 Разделы (темы) - меню тематик 00:10:55
7 чел. ★ 5 ^
  На этом уроке мы реализуем вывод ссылок на темы на главной странице и подсчет объявлений в каждой теме
66 Разделы (темы) - тематические выборки 00:15:13
7 чел. ★ 5 ^
  На этом уроке мы реализуем выбор объявлений по темам и вывод их на основную страницу
67 Разделы (темы) - полезные переходы 00:11:48
6 чел. ★ 5 ^
  На этом уроке мы реализуем возвращение со страницы объявлений на предыдущую страницу, а также переходы по темам объявления по типу хештегов
68 Разделы (темы) - администрирование - теория и заготовки 00:09:03
6 чел. ★ 5 ^
  На этом уроке мы создадим контроллер для администрирования разделов (тем) и представление index
69 Разделы (темы) - администрирование - все темы в таблицу 00:10:55
6 чел. ★ 5 ^
  На этом уроке мы выведем существующие темы в таблицу и зададим им элементы управления
70 Разделы (темы) - администрирование - подтверждение удаления 00:15:58
6 чел. ★ 5 ^
  На этом уроке мы реализуем алгоритм подтверждения удаления и создадим соответствующее представление
71 Разделы (темы) - администрирование - удаление разделов и чистка связей 00:09:07
6 чел. ★ 5 ^
  На этом уроке мы окончательно удалим раздел, а перед этим удалим все его связи с объявлениями
72 Разделы (темы) - администрирование - Обычный ThemesForm 00:10:23
6 чел. ★ 5 ^
  На этом уроке мы создадим модель ThemesForm, заготовку действия Add в контроллере Themes и представление под него
73 Разделы (темы) - исправление подсчета и отображение текущей темы 00:08:28
6 чел. ★ 5 ^
  Hа этом уроке мы исправим ошибку подсчета, обнаруженную в процессе прохождения курса,
а также отобразим текущую тему, по которой выборка объявлений, в баннере

74 Разделы (темы) - администрирование - "темное" представление 00:11:49
6 чел. ★ 5 ^
  На этом уроке мы создадим поля для редактирования или добавления темы в представлении themes\add
75 Разделы (темы) - администрирование - волшебный выпадающий список 00:09:17
6 чел. ★ 5 ^
  На этом уроке мы создадим выпадающий список выбора родительской темы
76 Разделы (темы) - администрирование - сохранение темы 00:19:30
6 чел. ★ 5 ^
  На этом уроке мы реализуем сохранение добавляемых и редактируемых тем
77 Разделы (темы) - администрирование - рефакторинг и валидация 00:07:02
6 чел. ★ 5 ^
  На этом уроке мы сделаем рефакторинг нашего представления add и валидацию данных формы ThemesForm
78 Связи объявлений и тем - заготовка 00:12:50
6 чел. ★ 5 ^
  На этом уроке мы создадим действие в контроллере BulletinsController и представление,
которые помогут нам работать со связями объявлений и тем
79 Связи объявлений и тем - добавление новой темы 00:22:38
6 чел. ★ 5 ^
  На этом уроке мы научим нашу систему добавлять новую тему в объявление (делать связь темы и объявления)
80 Связи объявлений и тем - темы, которых не было 00:11:33
6 чел. ★ 5 ^
  На этом уроке мы научим нашу систему выводить в список добавляемых в объявление тем только те, которые не прикреплены к нашему объявлению
81 Связи объявлений и тем - темы, которых не будет 00:10:57
6 чел. ★ 5 ^
  На этом уроке мы научим нашу систему удалять из объявлений темы, к которым наше объявление привязывать не надо
82 Глобальный поиск - поле поиска в меню 00:17:09
6 чел. ★ 5 ^
  На этом уроке мы добавим поле поиска в навигационное меню сайта, а также решим вопрос с активными пунктами меню.
83 Глобальный поиск - ищем глобально 00:17:08
6 чел. ★ 5 ^
  На этом уроке мы создадим алгоритм поиска по вводимому в поле search контенту
84 Расширенный поиск - группировка пунктов главного меню 00:12:47
6 чел. ★ 5 ^
  На этом уроке мы сгруппируем пункты главного меню в подразделы,
и сделаем в нем ссылку на страницу расширенного поиска
85 Расширенный поиск - заготовки и план 00:10:03
6 чел. ★ 5 ^
  На этом уроке мы набросаем план будущей страницы расширенного поиска,
а также создадим действие контроллера и заготовку представления расширенного поиска
86 Расширенный поиск - стили и форма 00:10:11
6 чел. ★ 5 ^
  На этом уроке мы внесем исправления в стили субменю и сделаем модель формы расширенного поиска
87 Расширенный поиск - дизайн текстовых полей и кнопки 00:16:02
6 чел. ★ 5 ^
  На этом уроке мы прокачаем навыки дизайна текстовых полей, создания активной формы в представлении,
а также создания кнопки через хелперы yii2
88 Расширенный поиск - цена - выбор варианта 00:10:45
6 чел. ★ 5 ^
  На этом уроке мы создадим систему управления выбором варианта поиска по цене
89 Расширенный поиск - цена - невидимые поля 00:18:17
6 чел. ★ 5 ^
  На этом уроке мы создадим невидимые блоки с полями поиска цены, которые становятся видимыми при нажатии определенного пункта навигатора
90 Расширенный поиск - дата публикации - виджет извне 00:23:18
6 чел. ★ 5 ^
  На этом уроке мы установим в наш проект компонент jui от стороннего разработчика
и создадим календарики для выбора дат

91 Расширенный поиск - результаты выборки - частичное представление 00:17:21
6 чел. ★ 5 ^
  На этом уроке мы рассмотрим возможность использования частичного представления в yii2-проекте и выведем в частичное представление карточку объявления
92 Расширенный поиск - генератор поиска - возвращение к SQL-запросу 00:15:52
6 чел. ★ 5 ^
  На этом уроке мы создадим генератор отчета, используя работу ActiveRecord фреймворка yii2 c
sql-запросами, и включим в него поиск по текстовым полям формы расширенного поиска
93 Расширенный поиск - генератор поиска - ограничивающие даты 00:10:54
6 чел. ★ 5 ^
  На этом уроке мы добавим в генератор отчета расширенного поиска выборку по датам публикации
94 Расширенный поиск - генератор поиска - три вида цены и один POST 00:14:47
6 чел. ★ 5 ^
  На этом уроке мы реализуем различные варианты выборки объявлений по цене и добавим их в наш генератор расширенного поиска
95 Обратная связь - свой сайт объявлений без видео
6 чел. ★ 5 ^
  И снова обратная связь.Подумаем самостоятельно и ответим на вопросы:
96 Расширенный поиск - генератор поиска - показать, что нужно 00:20:55
6 чел. ★ 5 ^
  На этом уроке мы реализуем отображение той вкладки поиска по ценам,
по которой производился  поиск
97 Работа с документацией Yii2 00:04:42
5 чел. ★ 5 ^
  На этом уроке переходим на один из официальных сайтов по Yii2
и, пользуясь помощью документации, реализовываем одну из своих идей

98 Пользователи и роли - планирование ролевой модели 00:08:08
5 чел. ★ 5 ^
  На этом уроке мы составим ролевую модель пользователей нашего сайта
99 Пользователи и роли - фильтры контроля доступа ACF - теория и эксперименты 00:08:44
5 чел. ★ 5 ^
  На этом уроке мы рассмотрим принципы работы фильтров контроля доступа ACF
100 Пользователи и роли - фильтры контроля доступа ACF - фильтруем всё 00:10:27
5 чел. ★ 5 ^
  На этом уроке мы сами создадим метод behaviors() в BulletinsController и зададим нужные фильтры для действий контроллера
101 Пользователи и роли - роли через RBAC - теория, установка и миграции 00:11:16
5 чел. ★ 5 ^
  На этом уроке мы установим расширение RBAC, настроим подключение к RBAC и создадим
базы для авторизации при помощи механизма миграции
102 Пользователи и роли - роли через RBAC - тесты и практика 00:25:53
5 чел. ★ 5 ^
  На этом уроке мы создадим тестовые роли и разрешения, а также проверим работу контроллера
согласно разрешений
103 Пользователи и роли - роли через RBAC - вносим действия в план 00:09:04
5 чел. ★ 5 ^
  На этом уроке мы добавим действия к ролям в нашей актуальной ролевой модели
104 Пользователи и роли - роли через RBAC - реализация плана 00:30:34
5 чел. ★ 5 ^
  На этом уроке мы создадим актуальные роли и действия для пользователей нашего сайта
105 Пользователи и роли - ACF+RBAC - ограничим доступ к темам 00:16:01
3 чел. ★ 5 ^
  На этом уроке мы реализуем ролевую модель для контроллера тем
  Итого:   105 видеоуроков 22 час. 48 мин.
2 теста
3 чел. ★ 5  
  Финалисты:   Николай Денисов,   Степан,   Жан .

Начинаем практику по языку C#





Если вы пришли без приглашения -
введите тысяча двадцать четыре (цифрами).
Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.


Научился: работа на разных компах приводит к неожиданным результатам Чему научился за отчётный период имею доложить следующее: Код РНР встраивается в документ HTML и наоборот. О границах: начало кода РНР можно распознать по слитному сочетанию пяти знаков YII(yes it is) использует концепцию MVC Модель рулит правилами View - видит пользователь в браузере Контроллер передает правила от Модели к Представлению Работа крайне аккуратно должна выполняться - один лишний пробел или незакрытая скобка, не тот регистр в имени переменной или класса и всё - код нерабочий, страница не отображается Но есть плюшка - встроенный дебаггер, подсказывающий в каком файле искать и на какую строку обратить внимание, выводимый вместо сбойной страницы после обновления Нравится краткость видеоуроков, при их продолжительности удобнее подбирать время для занятий Сейчас выходные, но они не вечны и скоро краткость Валерия будет на вес золота с приходом будней, когда звонит звонок и надо всё бросить и лететь куда скажут ) В проект хочу добавить хостинг и покупку домена, в прошлом году такое делал, надо повторить и поиграть с боевым сайтом, составить конкуренцию Авито ))) Догнать и перегнать, как учила нас партия))) Продолжение такого яркого курса конечно же нужно, интересно посмотреть на реализацию способностей коллег Всем удачи и сбычи мечт в области интеллектуального роста!
Трудности: Звук пришлось накладывать в ютубе - ноут, что делает сейчас работы по курсу с виндой 32 бита, микрофон в системе отсутствует, записал на нём видеоряд, аудио наложил в редакторе ютуба Мак, где со звуком всё в порядке, пока не заборол миграции, оттого видео не с него



Научился: На этом курсе я начал знакомство с фреймворком yii для создания сайта доски объявлений. Попрактиковался в языке php, увидел как в этом языке программирования создавать классы, методы. Фреймворк yii хорошо помогает в разработке сайта, модель MVC встроена в сам фреймворк. Узнал про механизм миграций, с помощью него создал таблицы в базе данных. Попутно самостоятельно разрабатывал сайт на языке Си. На верхнем скриншоте сайт php+yii, на нижнем скриншоте сайт на языке Си. На видео я показываю сайт на языке Си. Курс понравился подходом, который начал Евгений Витольдович - "делай как я". По этому курсу можно с полного нуля без знаний php и yii начать разрабатывать свой сайт. Причем с каждым последующим уроком больше входишь во вкус, как говорил Дмитрий Синицын, "сериал затягивает". В дальнейшем для реализации сайта доски объявлений можно добавить поиск по объявлениям, разные тематики, возможность оставлять комментарии.