Route Model Binding - роутинг с расширением в Laravel. Ответ на вопрос из чата CutCode

Темой для ролика стал вопрос в нашем чате в телеграм - (скорее переходим и подписываемся) посвященный Model Route Binding. Посчитал, что многим будет полезно изучить этот вопрос и решил снять ролик. Клавиатуры на старт! #Route#laravel#cutcode --------------------------------------------------------------------------------- ❗️❗️❗️Присоединяйся к нашему комьюнити в телеграм - там и советом помогут и много интересного - 🤖🤖🤖Мой помощник Тэйлор готов выдать тебе подарок. Забирать тут - --------------------------------------------------------------------------------- ⏰ Таймкоды: 00:00 Введение 01:00 Разбор первого вопроса 02:05 Реализация Route Model Binding 06:55 Разбор второго вопроса 07:48 Реализация Route Model Binding Всех поклонников Laravel я приветствую на канале CutCode! Недавно я просматривал наш чат в телеграме и наткнулся на множество вопросов по Model Route Binding и понял, то что кажется очевидным и хорошо описанным в документации, не всегда всем явно и очевидно. Это помните как было в школе когда все учителя шли самым простым путем и старались обучать только тех кто не особо-то и нуждался и мог учиться сам - а именно отличников с первых парт. А те кому давался процесс не совсем просто сразу записывали в отстающие и их не понимание происходящего с каждым днем только росло. Но тем кому просто и очевидно справятся и без нас, а мы сделаем упор на новичков и тем кому сложно или просто уперся в каких-то моментах. Итак друзья, первый вопрос был с расширением в url. Когда у нас есть и Route binding на модель, а также расширения, очень странная с PHP. Были времена когда часто сеошники добавляли HTML, но в этом случае у нас PHP. Всякое бывает и это не приговор. Собственно как выглядела постановка задачи - у нас есть какой-то Route, здесь значит у человека User, а дальше расширение PHP и вопрос заключался в том, что у него также юзер может быть опциональным. Как добиться и того чтобы и PHP при этом было опциональным. И вот такой URL у нас также работал и уходил также в home Controller в Action Index. Немножко хочу отступить здесь и сделать такую пометку - что я считаю что такой подход неправильный. Нужно создавать обязательно два End Pointa. И для главной страницы и для показа пользователя. Но если по каким-то причинам так сделать нельзя, давайте посмотрим как в этом случае нужно поступить. То есть мы можем здесь сохранить просто Route Binding User, сделать его опциональным. Итак друзья давайте для начала задампим, что мы там биндим в этом контроллере. Сюда передадим модель User, параметр User точно также должен называться он у нас как и мы кго задаем в роутах и сразу укажем, что у нас опциональный и может быть Null. И здесь его задампим. OK, давайте вернемся в браузер, обновимся, видим что у нас когда никого нет у нас отдает Null, а если мы скажем передадим ID 1, то у нас здесь будет пользователь с ID = 1. То есть Route Binding работает самым простом виде. И если мы скажем здесь добавим PHP у нас все еще продолжит работать, так как у нас строка приведется к integer и будет единица и все еще Bind сработает и он у нас здесь найдет необходимую модель. Давайте здесь немножко изменим, чтобы у нас все-таки не ID был, не integer, а были строки. Пусть это будет Тейлор - есть такой у меня пользователь, у которого First Name Тейлор. Заодно посмотрим по какому полю идет Bind в модели в рамках роута - необходимо поставить двоеточие и далее что-то указать. По умолчанию здесь ID. Давайте поставим firstname, и вернемся в браузер, обновимся и у нас в данном случае уже не сработает, так как есть PHP, здесь уже никуда не приводится - если мы просто сделаем Тейлор, он у нас найдет, но с PHP нет. Ну и все еще будет работать если у нас ничего нет. Давайте посмотрим как такой момент нам реализовать. --------------------------------------------------------------------------------- 📹 делитесь этим видео с друзьями: 🔔 подпишитесь на YouTube-канал: 📼 Курс по Laravel с нуля: НАЗВАНИЕНАЗВАНИЕНАЗВАНИЕ --------------------------------------------------------------------------------- 🔗 наш сайт: 📱 Наш telegram-канал:
Back to Top