Laravel Sluggable - Самый нужный плагин
Вставка
- Опубліковано 22 сер 2024
- Продолжаем обзор самых нужных/полезных/инфернальных плагинов, на этот раз посмотрим как подключить и настроить Laravel Sluggable, он нужен специально для того чтобы создавать ЧПУ, то есть слаги из некоего текста.
Ссылка на плагин:
github.com/cvi...
Полезные ссылки:
- Телега: t.me/evilfreel...
- Основной канал: / @pavelzloi
- Live-канал: / @e-freelancerlivechann...
- Twitch: / evilfreelancer
- Twitter: / evilfreelancer
- GitHub: github.com/Evi...
Ссылки на Steam:
- Группа Steam: steamcommunity...
- Рекомендации куратора: store.steampow...
Сделать пожертвование:
- www.donational...
- streamlabs.com...
- ko-fi.com/efre...
6:30 - треп заканчивается на этой секунде :)
Str::slug('взрослый даденька');
Ооо, я ждал этот коммент :)
Сергей, спасибо, что Вы написали про этот замечательный хелпер, я когда-то давно пользовался им, но перестал, а теперь, если Вас не затруднит, ответьте пожалуйста на парочку вопросов:
1) Как Вы будете при помощи "Str::slug" хелпера проверять уникальность слага, например если слаг уже есть в базе данных, а у Вас настроен UNIQUE индекс, а если нет индекса (забыли добавить)? Неужели через рекурсию?
2) Что планируете делать если потребуется настроить составной слаг состоящий из нескольких полей и при обновлении любого из этих полей надо будет чтобы слаг тоже менялся? (например слаг вида имя_фамилия или страна_город и т.п.)
3) Как реализуете умную обрезку длинны слага, так чтобы влезало в колонку таблицы и было грамматически правильно?
4) Не проще ли сэкономить несколько часов на кодинге и написании тестов просто поставив готовый плагин который всё вышеперечисленное сделает за Вас?
Не сочтите за грубость или типа того, мне просто интересно Ваше мнение на этот счёт :) потому что я некоторое время назад, спустя сотни строк кода и тестов, пришёл к выводу, что Str::slug хеплер скорее вреден, чем полезен и мне любопытен альтернативный взгляд на этот вопрос.
@@pavelzloi
1. 'slug' => 'required|exists:post,slug' я думал вы взрослый дяденька и знаете такие вещи) надо учить ларавель а не гавнопакеты искать
2 . laravel.com/docs/6.x/eloquent-mutators, laravel.com/docs/6.x/eloquent#observers
3. вобще из пальца ТЗ высосано особено посмеялся над "так чтобы влезало в колонку таблицы" ну раз просите держите 'slug' => 'required|max:150'
4 ответ для вас помойму очевиден
Не сочтите за грубость или типа того, но вам в пору самому видосы смотреть) PS. 'slug' => 'required|max:150' 'slug' => 'required|exists:post,slug' тут речь идет о реквестах и валидаторах такие вещи все мои знакомые взрослые даденьки чекают именно там)) ну на всякий случай
если серьезно, вы хорошее дело делаете людям интересно они смотрят, но не втирайте такую дичь как в этом видео. от все души вам желаю успехов
Прошу прощения, что сразу не ответил на Ваш комментарий, в связи с законом о защите детей ютуб блокирует все комментарии под видео которые не проходят мат фильтр, поэтому нужно вручную их аппрувить.
Благодарю за ответ, пользовался всеми перечисленными Вами приёмами и прошёл точно такую же эволюцию точки зрения на этот вопрос.
1. 'slug' => 'required|exists:post,slug' я думал вы взрослый дяденька и знаете такие вещи) надо учить ларавель а не гавнопакеты искать
Это не решение, это костыль, пользователь должен иметь возможность писать в названии своей комнаты всё что ему захочется (особенно у меня на работе, потому что из слагов формируется URL комнат, которые наши клиенты через нас продвигают и продают) и важно чтобы у клиента не было возможности этот slug менять потому, что тогда проседает SEO уже у нас.
По хорошему пользователя вообще это не должно касаться, он к нам деньги пришёл зарабатывать, а не думать о том какой там слаг должен быть у URL.
А проверку уникальности правильно делать в момент сохранения объекта через обсервер, и если попадаются повторы можно например добавлять цифру или какой угодно другой суффикс, например предложенный SEOшниками
Но это только если делать правильно, Ваш же вариант попроще - просто отобрать возможность у клиентов сохранять изменения, если нас что-то не устраивает, но бизнес с таким вариантом не согласится, к тому же проблемы этажом ниже, а именно на уровне БД, он тоже не решает.
2 . laravel.com/docs/6.x/eloquent-mutators, laravel.com/docs/6.x/eloquent#observers
Шикарные фичи движка, именно через них раньше у меня была реализована бОльшая часть функционала для решения проблем со слагами, но из-за постоянно увеличивающейся сложности доработки функционала от собственных решений дешевле было отказаться, чем сопровождать.
Кстати упомянутый Вами функционал задействован в исходниках плагина из видео, совпадение?
github.com/cviebrock/eloquent-sluggable/tree/master/src
Поэтому отказываясь использовать готовое решение Вы просто создаёте велосипед, такие дела.
3. вобще из пальца ТЗ высосано особено посмеялся над "так чтобы влезало в колонку таблицы" ну раз просите держите 'slug' => 'required|max:150'
ТЗ не высосано из пальца, это реальная задача, которую я решал несколько раз, например стыкуя название комнаты, города и страны. Правильнее будет сказать, что конкретно Вам подобные кейсы не попадались.
Ещё раз, slug'и важны нам для SEO, то есть править их через веб сайт клиентам давать нельзя, а по поводу ограничения длинны Вы похоже не до конца поняли мой кейс, в лоб тут проблему не решишь.
4 ответ для вас помойму очевиден
Очевиден и даже более чем, по тому, что Вы перечислили в качестве примеров против моих аргументов у меня сложилось впечатление, что у Вас ещё пока не очень много опыта работы со slug и SEO в сфере торговли, где slug'и очень важны.
И я не критикую, это нормально, невозможно знать всё и сразу, я вот тоже очень много чего не знаю, просто вспомните про этот плагин когда в следующий раз Вам придётся опять переписывать решение и у сайта SEO пойдёт вниз, после чего будете отчитываться перед начальством и исправлять проблему, ну или когда Вам в очередной раз придётся ещё раз решать уже решённую задачу.
@@pavelzloi Это не решение, это костыль)) просто убили вы меня. да работаете как вам удобно мне по .. (чтобы не апрувить). ЗЫ есть кстате шикарный пакет для работы с ларавель роутами и контроллерами, рекомендую сделать обзор
@@pavelzloi весь текст про то что слуг если не сразу пишется SEOшником то генерируется единожды (по паттерну или без) при создании записи, и может быть отредактирован по желанию SEOшником.
Следовательно должен обрабатываться и проверяться как стандартное поле (типа телефона) с маской, проверками на фронте а не на беке.
Управление слагами в разрезе SEO к этому плагину не имеет отношения.
На прошлой работе лид установил типа смотри как круто всё из коробки. После установки перестали работать вложенные запросы и появлялись лишние запросы при создании модели. Ради Str::slug ставить моудуль такое себе.
А он точно лид?))
Str::slug не сгенерирует вам уникальный слаг для модели. И нет там "лишних" запросов)
Во первых: Поподробнее. Что делает этот eloquent slugg ?
Во вторых: нахер такое длинное видео ? Слишком много слов и мало дела.
В третьих: Не проще было бы использовать мутаторы ?
Приветствую Дмитрий, про то что данный плагин делает по ходу видео показываю и рассказываю, к тому же расчет на тех кто уже и так знает как ЧПУ работает, но не слышал о плагине для ларька. Насчёт длинны видео и количества слов, замечание дельное, но получается как получается. Насчет мутатораов и т.п. мне доводилось пользоваться и мутаторами заголовков, и получать слаги через атрибуты, и своими хелперами конвертировать заголовки, а потом сохранять в базу, и даже делать костыли из реляций под разные переводы, ну и так далее, в итоге получалась свалка из легаси, которая из проекта в проект кочевала, а плагин это удобное решение, хоть и не полное.
Абсолютно ненужный плагин! куда проще мутатором и Str::slug
Если строка от которой берётся slug не уникальна, придётся самому описывать код, чтобы slug проверялся на уникальность и к не уникальному slug'у добавлялся суффикс
@@smykoil а что мешает всегда добовлять суфикс в виде ИД? да и + такую проверку самостоятельно можно ифчиком добавить и можно обойтись 3-4 строками кода, не думаю что для этого есть смысл писать пакет
@@MordreDgms ладно, ты выиграл
@@MordreDgms ты либо делай чпу либо не делай,,, нахера ид в чпу,,, это тогда залупа уже , а не чпу.
Псевдо чпу.