Создание собственного фреймворка. Виджет меню. Часть 1. Урок 16

preview_player
Показать описание
Премиум уроки по созданию сайта:

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

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

В видео версии урока вы найдете ответы на такие вопросы:

• Что такое виджеты?
• Как создавать виджеты для фреймворка?
• Как получить массив-дерево?

Рекомендации по теме
Комментарии
Автор

Очень полезный материал. Особенно демонстрация работы ссылок.

Jeremy-Red
Автор

Как всегда лайк и низкий поклон за ваш труд и знания!!!!

pbuldvs
Автор

А я знал прям, что не зря на ютуб зашёл) Спасибо за материал :)

TheNcoding
Автор

Андрей, спасибо за урок. Опять очень интересная тема. Хотя воспринимается сложновато, но это скорее - недостаток моих знаний.
Насчет записи отдельных уроков с ответами на вопросы по ходу курса - плюсую. Тематически отдельные небольшие уроки воспринимаются легче.
С нетерпением жду продолжения создания меню. А также - админки.
Ну, и, возможно, будет рассмотрен вопрос с локализацией (для мультиязычных сайтов) :)

ElenaVstavskaya
Автор

а как тут можно под каждым видео поставить дополнительно по 500 лайков, чтобы серия уроков была продолжена?

vuujlem
Автор

Здравствуйте Андрей. Вопрос не по данному видео. Хотелось бы увидеть видео от Вас по построению графиков, диаграмм - статистики по сайту на PHP без JavaScript

olehkolenkovskyi
Автор

Андрей доброго времени. Можете пожалуйста объяснить логику работы функции getTree и конкретно амперсанта &. Если в строке foreach($data as $id=>&$node) убрать & то итоговое дерево будет без вложенных элементов. Прочел что & дает нам ссылку на переменную вместо ее значения, но как в реальности это происходит с нашим кодом не понимаю. Спасибо)

ilurkji
Автор

Как всегда спасибо! Вопрос только вот, если мы строим фреймворк, то зачем урок по созданию меню? Оно конечно не помешает, даже лайк, но в принципе ?)

masterphp
Автор

Привіт Андрій, перш за все дякую Вам за уроки, хочу дізнатися чи плануєте записувати урок по авторизації та аутентифікації користувача?

yuriismilka
Автор

Здравствуйте Андрей, Можно ли реализовать функцию для глобального использования, то есть к примеру, после авторизации пользователя нужно в каждом контроллере подключать информацию о пользователе ( ник, почту и т.д ).
Хотелось бы просто 1 раз подключить информацию о пользователе в AppController и выводить сразу в виде и не вызывать в каждом action.

assassinrus
Автор

Доброго времени, Андрей.
Когда планируется следующее видео?

qfgrnsy
Автор

а можно такой класс, только без использования библиотеки-просто на php?где что поменять

ura
Автор

Кстати немножечко оффтопа:
Андрей, Как Вам windows10 и что заставило перейти на неё, и как Относитесь Вы к глобальной слежке за пользователями ПК айфонов и Ведер ?

kosoystudio
Автор

Андрей, добрый день. Пытаюсь открыть исходники скачанные с вашего сайта. Начиная с 16-го урока по 22-ой все архивные RAR файлы являются битыми и не открываются. При возможности перезалейте, пожалуйста, валидные архивы. Заранее благодарю.

JJ-qypg
Автор

По результатам использования фреймворка возник вопрос. Допустим есть форма входа на сайт, которая отображается на всех страницах, а код её прописан в view/layout/default.php. Я внес в неё переменную которая должна отображать ошибки входа, если они есть. Саму переменную я прописал в контролере главной страницы - Main. На этом этапе никаких ошибок нет, но стоит перейти в браузере на страницу другого контролера, как сразу выскакивает ошибка - переменная не определена. Вопрос в том, что делать в таком случае ?
Думаю что инициализировать переменную в файле вида не комильфо, прописывать её в каждом котролере тем более. Можно просто выключить ошибку, как это показано в этом видео, но это не совсем то что мне надо. На этапе разработки она всё равно будет мешаться.
Что делать ?!

runapkin
Автор

Здравствуйте Андрей.
Подскажите, как сделать класс, для того, чтобы с его помощью получать свободные данные из любого места фреймворка? Что-то не получается сообразить, как это сделать в пространстве имен?

qfgrnsy
Автор

Не знаю почему JSON.parse($data) - выдает ошибку (SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data[). Если выводить в консоль
через console.log(res) все нормально

olehkolenkovskyi
Автор

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

sozidatel
Автор

Может ли кто-нибудь сведущий объяснить мне, тупому, на пальцах, как работает эта строка в функции getTree(): = &$node; ??? Да и вообще вся функция целиком. Просмотр и даже прочтение информации в соответствующем бесплатном уроке света не пролили. Первая часть функции вполне понятна - "если элемент массива не является ничьим потомком - он помещается в массив $tree. В результате, если из функции убрать вторую часть - "else" - функция вернет массив $tree с 4-мя элементами, у которых поле 'parent' = 0. Здесь понятно. Но вот что получается после "else" - увы, за гранью моего понимания. Там мы ВОБЩЕ не касаемся более массива $tree, а работаем с "исходным" массивом $data. По логике, там что-то о том, что если элемент массива чей-то потомок (поле 'parent' равно полю id "предка" - тогда у "родительского" элемента появляется "ключ" "childs" со значением (массивом значений), соответствующему потомку/потомкам. Фухх... Но функция возвращает массив $tree, а не "исходный" массив $data, так? Короче, я вконец запутался. Вопрос - как в массиве "дерево" оказываются не 4 "родительских" элемента, а всё дерево, если мы в случае "else" больше с ним не работаем? И второй вопрос - я совсем тупой, да? ))

androgenius
Автор

Я себя ненавижу. Потратил время и создал проблемы, наковырял бездумно, хотя все прекрасно выводит
= answer;
Смешивание js и php мне дает эффект === водка + пиво

aleksandrmayboroda