Автор: Виктор Гавриленко
Laravel - это фреймворк для web-приложений с выразительным и элегантным синтаксисом. Он позволит упростить решение основных наболевших задач, таких как аутентификация, маршрутизация, сессии и кэширование. Laravel — это попытка объединить всё самое лучшее, что есть в других PHP фреймворках.
Основные преимущества Laravel:
Первый раздел курса посвящен изучению теории фреймворка Laravel, в котором мы рассмотрим функционал и возможности фреймворка. Здесь вы изучите основные теоретические моменты его использования. При этом обучение построено по принципу от простого к сложному. Мы разберем структуру и принцип работы фреймворка, его основные элементы. По завершении изучения теоретического раздела, вы научитесь выполнять его установку, формировать маршруты, работать с контроллерами, моделями, видами и т. д.
Список уроков:
В первом вводном уроке курса мы с Вами поговорим о том, что и как будем изучать. В частности, определимся с понятием «фреймворк» в целом, кратко обсудим Laravel, а также те инструменты и знания, которые необходимы для нормального понимания уроков
В данном уроке мы подробно поговорим об инструменте Homestead, то есть определимся с тем, что это такое, как его установить, и как установить фреймворк Laravel на данный продукт
В данном видео мы поговорим о том, как установить фреймворк Laravel на программное обеспечение OpenServer
Итак, фреймворк установлен, а значит, мы можем сделать краткий экскурс в файловую структуру Laravel – тем самым определимся с основными элементами, которые формируют его структуру
Фреймворк Laravel после установки практически не требует дополнительного конфигурирования, то есть Вы сразу же можете приступать к разработке необходимого функционала. Конечно, некоторые параметры все же потребуется изменить, к примеру, настройки подключения к базе данных. Поэтому в данном уроке мы рассмотрим настройки Laravel
В данном видео я хотел бы поговорить о принципе работы фреймворка Laravel. То есть, куда попадает запрос пользователя, как он обрабатывается, и как отображаются данные на экран. Конечно, у Вас пока еще мало знаний, но уже сейчас мы с Вами можем разобраться с тем, как отображается на экране традиционное приветствие фреймворка, и по аналогии создать свою первую страницу
В данном уроке мы поговорим о методах регистрации маршрутов для различных типов HTTP запросов. Вы узнаете, что такое маршрутизатор, маршрут и, главное, как они создаются
В данном уроке мы поговорим о параметрах, которые могут передаваться в запросах, а также научимся группировать маршруты
На данном этапе Вы уже умеете создавать маршруты фреймворка Laravel и, соответственно, создавать функции-обработчики запросов пользователей. В данном уроке мы поговорим о контроллерах, которые позволят вынести код обработчика роутера в отдельный файл
В данном уроке мы поговорим о посредниках фреймворка Laravel. При этом разберем, что это такое, и как они создаются
Изучив контроллеры, мы переходим к следующему элементу шаблона MVC – видам. Поэтому в данном уроке мы научимся создавать виды для фреймворка Laravel, при этом Вы узнаете, как их создавать, как передать необходимые переменные; также мы рассмотрим методы, использующиеся для работы с видами
В данном видео мы поговорим о шаблонизаторе Blade, который поставляется в стандартной комплектации фреймворка. Вы узнаете, как отображать значения переменных на экран, а также как, используя наследование, реализовать вложенность шаблонов
В данном видео мы продолжим изучать шаблонизатор Blade, а именно, рассмотрим стандартные директивы шаблонизатора, реализующие различную логику в структуре шаблона. Кроме этого, Вы узнаете, как создать собственную директиву
Создавая собственный проект, первое, что получает наше приложение от пользователя – это его запрос на отображение определённой информации на экран, либо же выполнение определенных манипуляций с данными, отправляемыми в теле запроса. А значит, в данном уроке мы поговорим о специальном классе под названием Request, который представляет собой абстракцию отправляемого запроса
Формируя функционал будущего проекта, то есть, создавая маршруты, контроллеры и методы, обрабатывающие запросы, так или иначе, мы возвращаем определенные данные – ответ, который отправляется обратно в браузер пользователю, поэтому в данном уроке мы поговорим о том, какими способами во фреймворке Laravel можно реализовать ответ на определенный запрос
С данного видео мы приступаем к изучению инструментов фреймворка Laravel, предназначенных для работы с базой данных. И начнем с довольно интересного понятия под названием «миграции»
На прошлом уроке мы научились работать с базой данных, используя миграции фреймворка Laravel, а именно, создавать необходимые таблицы и редактировать существующие. Помимо миграций, фреймворк включает в себя механизм посева данных (наполнения таблиц базы данных начальной информацией), который мы с Вами рассмотрим в данном уроке
В данном видео мы рассмотрим один из способов работы с базой данных, используя инструменты фреймворка Laravel. Напомню, что на прошлом уроке мы с Вами кратко познакомились с каждым из них, и, конечно, этого недостаточно. Поэтому начнем с наиболее простого способа, который предусматривает формирование и выполнение обычных SQL запросов
В данном видео мы с Вами рассмотрим конструктор запросов фреймворка Laravel, использование которого избавит Вас от ручного формирования запросов
В этом видео мы рассмотрим третий способ работы с базой данных, который предусматривает использование моделей – очередного компонента паттерна MVC
В данном видео мы продолжаем говорить о моделях фреймворка Laravel. При этом мы рассмотрим дополнительные методы по созданию и редактированию записей
В данном видео мы поговорим о реализации связей между таблицами базы данных, используя модели фреймворка Laravel. Мы рассмотрим различные виды связей и методы модели, которые используются для определения данных связей
В этом видео мы продолжаем учиться работать с моделями, а именно, рассмотрим добавление, редактирование и удаление связанных записей; также мы изучим понятие «жадная загрузка данных»
В данном уроке мы рассмотрим методы изменения данных, отвечающих за связи, а именно, значения внешнего ключа таблицы. Кроме этого, мы познакомимся с приемом, который позволит описать некоторые действия, выполняемые с полями моделей при чтении и изменении их значений
Фреймворк Laravel содержит в своем составе очень удобный и функциональный механизм валидации данных, который мы будем изучать на протяжении нескольких уроков. В данном видео мы рассмотрим валидацию данных, хранящихся в объекте запроса Request, а также изучим доступные правила валидации
В данном уроке мы рассмотрим ручное построение валидатора данных и, таким образом, научимся проверять информацию, содержащуюся в массивах, а также познакомимся со специальными классами запросов, благодаря которым можно быстро организовать валидацию необходимых данных
В данном видео мы поговорим о сообщениях, описывающих ошибки валидации – как они формируются, и каким образом создать собственные. А также рассмотрим некоторые более сложные условия валидации данных
Начиная с данного видео, мы приступаем к изучению встроенной системы аутентификации фреймворка Laravel. При этом мы рассмотрим настройки данной системы и ее составные части, научимся закрывать доступ для незарегистрированных пользователей в определенные разделы сайта, а также рассмотрим методы Laravel, которые используются для аутентификации
В данном видео мы продолжаем знакомиться с системой аутентификации фреймворка Laravel
В данном видео мы более подробно поговорим о фасаде Auth и о тех методах, которые он предоставляет, а именно, методы проверки аутентификации. Кроме этого, мы самостоятельно реализуем механизм аутентификации пользователей при помощи метода attempt()
В данном уроке мы с Вами начнем рассматривать систему авторизации пользователей, то есть будем учиться разделять пользователей по их правам (разрешение на выполнение конкретного действия), используя встроенные инструменты фреймворка
В данном уроке мы рассмотрим классы политик авторизации, вынесем правила проверки прав пользователей в отдельные классы, а также изучим некоторые вспомогательные инструменты механизма авторизации пользователей
В данном уроке мы рассмотрим инструменты фреймворка, которые используются для работы с сессиями. Таким образом, Вы узнаете, как добавить, извлечь и удалить данные из сессии
В данном уроке мы познакомимся с событиями фреймворка Laravel, при этом Вы узнаете, как создать обработчик конкретного события, а также, как инициализировать необходимое событие для его дальнейшей обработки
В данном уроке мы создадим локализацию для учебного проекта. Мы рассмотрим принцип работы локализации, структуру файлов словарей, а также методы, которые используются для доступа к значениям, хранящимся в определенных словарях
С этого урока мы приступаем к изучению основных элементов фреймворка, определяющих его функционал. Непосредственно в данном видео мы рассмотрим контракты. Вы узнаете, какова роль данных классов для работы фреймворка в целом, а также, как их создавать
В данном видео мы поговорим о сервис-провайдерах. Вы узнаете, что это такое, как создать данные классы, и какие действия они выполняют
В данном видео мы рассмотрим понятие «сервис-контейнер». При этом Вы узнаете, для чего нужен данный класс, а также, как добавляются новые сервисы в его структуру
В данном видео мы подробно рассмотрим понятие Фасад, с которым очень тесно работали на протяжении практически всех уроков данного раздела. Вы узнаете, для чего они применяются, и научитесь их создавать
Изучив теорию фреймворка Laravel, необходимо закрепить полученные знания на практике, то есть использовать накопленную информацию для реализации полноценного законченного проекта. Поэтому в данном разделе мы с вами будем заниматься только практикой, и при этом создадим два сайта.
Первый, конечно же, более простой, так как изучение следует вести от простого к сложному, и это проект сайта типа Landing Page (лендинг). Второй – это более сложный сайт, практически готовая CMS, корпоративный сайт.
Сайты типа Landing Page очень популярны в данное время, поэтому в первой части практического раздела нашего курса мы с вами разработаем с абсолютного нуля как раз-таки сайт данного типа, используя фреймворк Laravel. Конечно, для создания подобного проекта, по сути, фреймворк и не нужен, особенно такого уровня, как Laravel, но все же, на данном примере мы с вами создадим первое готовое приложение
Функционал создаваемого сайта несложен, по сути, это одна-единственная страница, на которой будут отображаться отдельные секции с различной информацией. На данном примере вы увидите, как организовать структуру простейшего сайта, какие маршруты использовать, как отображать информацию на экран и т. д. Также мы реализуем простейшую панель администратора, благодаря которой можно будет добавлять информацию в отдельные секции сайта
Список уроков:
В данном уроке мы определимся с функционалом создаваемого сайта, кратко поговорим о сайтах Landing Page, а также установим фреймворк для будущей разработки"
После установки фреймворка, мы можем перейти к непосредственной работе над будущим проектом. И для начала создадим необходимые таблицы в базе данных для хранения контента будущего сайта. При этом, конечно же, мы используем миграции фреймворка"
В данном уроке мы создадим маршруты, которые необходимы для работы будущего сайта, а также поговорим о том, какие контроллеры понадобятся для обработки запросов пользователей"
В данном видео мы реализуем главный контроллер сайта Landing Page, который будет обрабатывать запрос на отображение главной страницы сайта, и начнем создавать вид будущего проекта. При этом перенесем все медиафайлы верстки шаблона в публичный каталог и, с учетом этого, пропишем пути для подключаемых элементов вида"
В данном видео мы разделим вид проекта на несколько отдельных составляющих, продолжим дорабатывать код главного контроллера сайта, а также создадим модели, которые необходимы для работы с базой данных"
В данном видео мы заменим статическую информацию, прописанную в созданном виде, на данные, выбранные из соответствующих таблиц базы данных"
Продолжаем дорабатывать вид отображения информации главной страницы Landing Page"
На данном этапе главная страница сайта практически завершена, доработать осталось только блок футера, в котором отображается форма отправки сообщения. Поэтому в этом уроке мы создадим механизм отправки писем на определенный почтовый ящик, используя данные, отправленные формой, и инструменты фреймворка"
В данном уроке мы создадим страницу детального просмотра отдельной записи"
С этого видео мы приступаем к реализации закрытого раздела будущего сайта, то есть панели администратора, которая будет использоваться для редактирования контента"
В данном видео мы приступаем к реализации раздела по добавлению, редактированию и удалению страниц разрабатываемого сайта. А именно, мы реализуем главную страницу раздела и сформируем форму добавления нового материала"
В данном уроке мы создадим логику сохранения новой записи в таблицу базы данных. При этом мы проверим входные данные на соответствие определенным условиям, то есть реализуем валидацию информации, а также поговорим о том, как работать с загружаемыми на сервер файлами"
В данном уроке мы создадим страницу редактирования ранее добавленной записи"
В данном уроке мы реализуем механизм обновления информации в базе данных для ранее добавленного материала"
В данном видео мы реализуем удаление ранее добавленных материалов и подведем итоги по первой части практического раздела"
Второй – это более сложный сайт, практически готовая CMS, корпоративный сайт.
Мы с вами реализуем полноценную CMS – корпоративный сайт с использованием фреймворка Laravel.
Функционал данного сайта значительно сложнее, нежели сайта, разрабатываемого в первой части, а значит, мы закрепим практически все, что изучали в теории
Создаваемый сайт будет включать в себя полноценный раздел блога, в котором будут публиковаться различные материалы, привязанные к определенным категориям. Причем структура категорий двухуровневая – материалы будут прикрепляться к категориям второго уровня, то есть дочерним. Комментарии будут добавляться без перезагрузки страницы
В функционале сайта будет предусмотрен раздел портфолио, в котором будут опубликованы выполненные работы конкретной компании
Меню сайта, как и категории, двухуровневое, причем для его реализации мы воспользуемся средствами дополнительного расширения, которое установим в процессе разработки.
Для редактирования контента сайта мы создадим панель администратора, в которой можно добавлять, изменять и удалять содержимое пользовательской части сайта: материалы, меню, пользователи и т. д.
При этом, это закрытый раздел, доступ к которому могут получить только зарегистрированные пользователи, и только в том случае, если у них есть соответствующие права
Мы не только используем систему регистрации и аутентификации фреймворка Laravel, но и задействуем механизм авторизации, то есть будем разделять пользователей по их правам и ролям (пользователи будут сгруппированы по ролям, а у каждой роли будет определен набор прав), и, соответственно, на каждом этапе работы админки будем выполнять проверку прав пользователя на выполнение текущего действия
Список уроков:
В первом уроке второй части практического раздела, мы, как обычно, поговорим о сайте, который будем создавать, рассмотрим шаблон, который будет использоваться для отображения информации на экран, а также выполним установку фреймворка Laravel"
После установки необходимо определить структуру будущей базы данных. Таким образом, в этом уроке, используя миграции, мы создадим необходимые таблицы для будущего проекта, а также наполним созданные таблицы начальными данными"
В данном уроке мы создадим маршруты, которые понадобятся для создания сайта. Также реализуем глобальный макет, который будет задавать структуру всех страниц пользовательской части и макет главной страницы будущего сайта"
В данном видео мы пропишем пути для подключаемых элементов в созданном виде – тем самым добьемся того, чтобы пользовательская часть сайта по своей структуре совпадала с версткой шаблона. А также начнем реализацию главного меню проекта"
В данном уроке, используя специальное расширение фреймворка Laravel, мы продолжим формировать главное меню будущего сайта, а именно, создадим специальный объект класса из установленного расширения для хранения информации о доступных ссылках и отобразим их на экране в требуемом формате"
В данном видео мы реализуем слайдер главной страницы пользовательской части сайта"
В данном видео мы сформируем область контента главной страницы пользовательской части сайта. При этом в данном блоке будут отображаться последние выполненные работы компании, то есть список некоторых записей из раздела «Портфолио»"
В данном видео мы продолжаем дорабатывать область контента главной страницы пользовательской части сайта"
В этом видео мы отобразим на экран правый сайд-бар главной страницы пользовательской части сайта"
В данном видео мы поговорим о локализации будущего проекта. То есть заголовки главной страницы пользовательской части сайта и любые другие значения, которые необходимо переводить на определенный язык, мы будем хранить в специальных файлах-словарях. Также добавим в структуру страницы информацию для мета-тегов"
С данного урока мы приступаем к реализации раздела «Блог» проекта «корпоративный сайт». При этом мы выберем необходимую информацию из базы данных, с учетом разбиения на отдельные страницы. Таким образом, научимся формировать постраничную навигацию, используя инструменты Laravel"
В данном видео мы продолжаем формировать главную страницу раздела «Блог». При этом, так как материалы блога связаны с некоторыми дополнительными элементами – категориями, пользователями и комментариями, необходимо создать соответствующие модели и описать вышеуказанные связи, что мы с Вами и проделаем. А также отобразим на экране выбранные материалы"
В данном уроке мы отобразим на экран элементы управления постраничной навигацией, и, тем самым, закончим формирование области контента главной страницы раздела «Блог»"
В данном уроке мы отобразим на экран правый сайд-бар раздела «Блог». А именно, информацию о последних работах раздела «Портфолио»"
В этом уроке мы отобразим в правом сайд-баре информацию о последних добавленных комментариях, немного доработаем общий дизайн страницы раздела «Блог» – добавим недостающую тень после панели навигации, а также немного оптимизируем работу проекта в целом, применив «жадную» загрузку"
В данном уроке мы реализуем механизм отображения материалов, привязанных к определенным категориям, и начнем создавать страницу просмотра отдельного материала блога, при этом выбирая из базы данных информацию о материале, который необходимо отобразить на экран. А также подгрузим комментарии, привязанные к текущему материалу"
В данном видео мы отобразим выбранную в предыдущем уроке информацию по отдельному материалу и поговорим о том, в каком виде будут отображаться комментарии"
В данном видео мы реализуем блок отображения комментариев. При этом в механизме добавления комментариев предусмотрены ответы, а значит, мы используем древовидный стиль отображения данных"
В этом уроке мы займемся доработкой формы добавления нового комментария и начнем описывать механизм создания комментария. При этом комменты будут добавляться асинхронно, используя метод AJAX, а значит, мы начнем формировать необходимый код на языке JavaScript"
В данном уроке мы создадим механизм сохранения нового комментария в базу данных. При этом, конечно же, используя валидацию, мы проверим входные данные, а также закрепим умение добавления записей в связанные таблицы"
Продолжаем доработку механизма добавления новых комментариев. А так как комментарий добавляется при помощи метода AJAX – пользователь не видит перезагрузки страницы и не знает, добавлен его коммент или нет. Поэтому в данном уроке мы это исправим"
В данном видео мы опишем дополнительные варианты отправки комментария – отправку родительского комментария, а также отправку первого комментария для определённого материала. Кроме этого, добавим на страницу метаинформацию и заголовок вкладки браузера для каждого отдельного материала"
Начиная с данного видео, мы приступаем к реализации раздела «Портфолио» проекта корпоративного сайта. Мы определимся с шаблоном, создадим вид для формирования страницы и начнем описывать функционал необходимого контроллера. В результате урока мы отобразим список всех доступных работ портфолио на странице браузера"
В данном видео мы исправим некоторые несоответствия по отношению к верстке макета на странице списка работ портфолио. А также создадим страницу просмотра отдельной работы раздела «Портфолио»"
В данном уроке мы определим условия, которым должны соответствовать параметры используемых маршрутов проекта, и создадим страницу «Контакты» будущего сайта"
В данном видео мы реализуем страницу 404 проекта «Корпоративный сайт». Данная страница информирует пользователя о том, что запрашиваемая страница не найдена. Кроме этого, мы реализуем запись информации в файл журнала проекта"
В данном видео мы реализуем страницу аутентификации пользователя. Это последняя страница пользовательской части, которую мы с Вами создадим"
Начиная с данного видео, мы приступаем к формированию закрытого раздела проекта корпоративного сайта. То есть, мы начинаем создавать панель администратора, которая используется для редактирования содержимого всего сайта в целом"
Закрытый раздел – это часть сайта, доступ к которой разрешен только пользователям, зарегистрированным на сайте, и только в том случае, если у них есть соответствующие права. А значит, в данном уроке мы начнем формировать механизм проверки прав и привилегий пользователей"
В данном уроке мы реализуем метод, который осуществит проверку наличия прав у пользователя на выполнение определенного действия в закрытом разделе"
С данного урока мы приступаем к реализации раздела по управлению содержимым блога. При этом мы отобразим на экран список ранее добавленных материалов"
В данном уроке мы создадим форму добавления нового материала. Для текстовых областей формы подключим визуальный текстовый редактор CKEditor"
В данном видео мы начнем создавать механизм сохранения нового материала в базу данных. При этом реализуем правила валидации данных и опишем метод генерации уникальных псевдонимов для создаваемых статей"
В данном уроке мы продолжим дорабатывать механизм добавления новых материалов. Мы установим дополнительное расширение фреймворка, которое значительно упростит работу с загружаемыми изображениями, а именно, сохранение и изменение их размеров"
Теперь, когда мы можем добавлять новые материалы блога, необходимо реализовать механизм редактирования статей, чем мы, собственно, с Вами и займемся в данном уроке"
В данном видео мы реализуем механизм обновления материалов раздела «Блог», при этом, по сути, мы воспользуемся уже готовым кодом механизма добавления нового материала и внесем некоторые правки в логику валидации данных, логику создания псевдонима и, конечно же, вместо метода сохранения, используем метод обновления данных"
В данном видео мы реализуем механизм удаления материала блога. При этом, помимо удаления материала, мы также поговорим о том, как удалить связанные с данным материалом комментарии, и добавим условие, что удалить материал может только тот пользователь, который его добавил"
В данном видео мы реализуем страницу редактирования прав, привязанных к определенным ролям пользователей. При этом мы выберем необходимую информацию из базы данных и создадим вид для отображения контента вышеуказанной страницы"
В данном уроке мы опишем механизм обновления информации о правах, привязанных к определенным группам пользователей"
Начиная с данного видео, мы приступаем к реализации раздела меню панели администратора, который необходим для создания, редактирования и удаления ссылок меню пользовательской части. При этом мы реализуем механизм генерации путей для будущих ссылок, исходя из указанных пользователем данных. Непосредственно в данном видео мы отобразим на экран список ранее добавленных пунктов меню"
В данном видео мы создадим страницу добавления нового пункта. При этом данная страница – это, по сути, набор определенных полей формы, заполнив которые и отправив форму на сервер, пользователь создаст новый пункт меню. Поэтому на создаваемой странице мы сформируем определенный набор инструментов, благодаря которым пользователь укажет, на какой элемент необходимо сгенерировать ссылку нового пункта меню"
В данном уроке мы с Вами прикрутим виджет Accordion библиотеки jQueryUI к странице добавления новой ссылки меню и, тем самым, улучшим юзабилити страницы. А также создадим механизм сохранения нового пункта меню в базу данных"
В данном видео мы реализуем страницу редактирования ранее добавленного пункта меню"
В данном уроке мы реализуем механизм обновления и удаления информации о ранее добавленной ссылке пункта меню и, таким образом, закончим раздел меню панели администратора"
В данном видео мы поговорим о разделе пользователя панели администратора создаваемого проекта. По сути, данный раздел я уже создал и хотел бы в данном видео прокомментировать код вышеуказанного раздела"
В заключительном уроке мы подправим некоторые несоответствия, допущенные во время разработки, а также подведем итоги по изученному материалу"