Laravel курс с нуля, база. 30. Шаблон Filter, фильтрация данных в Laravel

  Рет қаралды 28,443

Laravel Creative

Laravel Creative

Күн бұрын

Стань спонсором(бусти аккаунт), доступ к собеседованиям:
boosty.to/lara...
Мои платные курсы:
laravelcreativ...
План развития с нуля до middle+:
laravelcreativ...
Группа вк:
laravel...
Ссылка для донатов, спонсорства, пожертвований
yoomoney.ru/to...
www.donational...
-
. ---
. . Ссылка на файлы фильтра:
drive.google.c...

Пікірлер: 202
@100kgstyle9
@100kgstyle9 2 жыл бұрын
Если у кого-то не работал route на /posts после добавления реквеста, проверьте, не стоит ли у вас в валидации 'required|string'. Если убрать реквайред, то всё начинает работать
@laravelcreative
@laravelcreative 2 жыл бұрын
Благодарю!)
@ИгорьПавлов-г9ц
@ИгорьПавлов-г9ц Жыл бұрын
Дуже дякую тобі за таку важливу підказку. Геть не розумів, чому в мене не з'являється ні один запит
@АлександрЛисин-е4л
@АлександрЛисин-е4л Жыл бұрын
Спасибо, я всю голову сломал😉😎👍👍👍
@АлександрКопылов-и5г
@АлександрКопылов-и5г Жыл бұрын
Благодарю тебя, добрый человек!
@DaniilPopov-cu6mr
@DaniilPopov-cu6mr Жыл бұрын
Огромное спасибо, мучился бы ещё час
@homeuser3108
@homeuser3108 3 жыл бұрын
Спасибо за уроки! Мне заходят на ура - закрывают ряд пробелов и нестыковок по Laravel. Чем дальше, тем интереснее, прямо как в сериале)) Если еще и второй сезон "Блог на Laravel" зайдёт мне так же хорошо, как и этот, это будет совсем шикардос! ))
@laravelcreative
@laravelcreative 3 жыл бұрын
Спасибо большое за такой подробный отзыв!) От души!):)
@МахмудКосимов-з9и
@МахмудКосимов-з9и 2 жыл бұрын
Я заметил одно исключение у ваших уроках. Вы с начало показывайте как можно реализавать той или иной чадачи обычно, затем показывайте как реализуеться профессинальном путьем. Это редкое случаи в подобных каналах. Благадарю за уроки.
@dom-pirata
@dom-pirata Жыл бұрын
Тяжело не заметить :)
@ulyanapovitrulay594
@ulyanapovitrulay594 3 жыл бұрын
У Вас замечательные уроки!!!!!! Все просто, понятно, по полочкам!!! Спасибо, Вам огромное! Я лучших уроков не встречала)))))
@laravelcreative
@laravelcreative 3 жыл бұрын
Благодарю)! Успехов!)
@artemsergeev4833
@artemsergeev4833 Жыл бұрын
В laravel 10, чтобы увидеть результат функции dd($posts); нужно добавить метод get, а именно: $posts = Post::filter($filter)->get(); без данного метода выводится объект builder. Все понятно, если самому изучать каждый метод и смотреть откуда и какие приходят параметры. Хотелось бы посмотреть на реализацию фильтрации на странице с постами, а не только в виде виртуального кода.
@laravelcreative
@laravelcreative Жыл бұрын
Благодарю!:)
@Justizfn
@Justizfn Жыл бұрын
если я правильно понимаю, можно просто добавить кучу кнопок в с методом гет и валью нужного фильтра, реализовывать не пробовал это лишь мои догадки, если что поправьте. Всем удачи в обучении.
@aramakonstantin
@aramakonstantin 11 күн бұрын
Спасибо что указали, а то я уже запаниковал, что не вижу чего надоть.....
@aramakonstantin
@aramakonstantin 11 күн бұрын
Изумительная подача материала. Спасибо за великолепный курс! Пожалуй этот урок был самым для меня сложным... Буду все пошагово разбирать, тема не простая!
@АндрейГалушко-е9о
@АндрейГалушко-е9о 3 жыл бұрын
Пушка контент! не могу оторваться, уже не однократно засыпал от него, но не от того что скучный, а от количества поглощенного материала!! просто оторваться не могу, даже на сон!! Смотрю на одном дыхании, не однократно уже натыкался на ооооочень интересные подходы!!! за что автору низкий поклон, до самых корней земли!!! СПАСИБО ОГРОМНОЕ !!
@laravelcreative
@laravelcreative 3 жыл бұрын
Ого, спасибо большое за такой подробный отзыв! От души!) Благодарю!) Успехов!)
@vimitali7630
@vimitali7630 3 жыл бұрын
Спасибо, за урок! Очень крутая и простая подача материала!
@laravelcreative
@laravelcreative 3 жыл бұрын
Благодарю)!
@qr46654
@qr46654 3 жыл бұрын
% в начале - это значит, что до искомой последовательности символов могут находиться другие символы, а % в конце - то, что другие символы могут находиться после искомой последовательности символов. Если необходимо найти только записи с точным совпадением всех символов как в запросе, то знаки % ставить - не нужно. Это правила SQL
@laravelcreative
@laravelcreative 3 жыл бұрын
Совершенно верно:) Спасибо!)
@АнтонСурыгин-ф9ж
@АнтонСурыгин-ф9ж 8 ай бұрын
Какая мощная тема! Я конечно не все понял, но понял логику. Буду возвращаться к этому видео =)
@dimanamumchak5370
@dimanamumchak5370 3 жыл бұрын
очень интересный урок, благодарю!
@laravelcreative
@laravelcreative 3 жыл бұрын
Благодарю!)
@bohdanafanasiev3433
@bohdanafanasiev3433 2 жыл бұрын
Как я люблю эти фразы в курсе, по типу: "Но это все не эфективно..."
@h3xx0r
@h3xx0r Жыл бұрын
Спасибо дружище, помог во многом разобраться.
@ВалерийОжерельев-к6й
@ВалерийОжерельев-к6й Жыл бұрын
Обращу ваше внимание на то, что если у вас в правилах валидации есть required, например 'title' => 'required|string' это приведет к ошибке "сервер выполнил переадрисацию слишком много раз" удалите просто required из правила
@andrewlevitsky6270
@andrewlevitsky6270 Жыл бұрын
Еее, сам догадался )) Потом уже посмотрел комментарии. Но именно от данной темьі мозги начали плавиться, весьма сложная
@bonnnerman93
@bonnnerman93 Жыл бұрын
дякую
@РаджибС
@РаджибС Жыл бұрын
Спасибо за курс.
@sergeyromanov1920
@sergeyromanov1920 2 жыл бұрын
Спасибо за урок. Слишком поздно заметил ссылку на файлы ) практически все перепечатал, что было в видео. А так как в видосе не было видно функции before - то возникла ошибка. После же обнаружения файлов в ссылке под видео, проблему удалось решить и все заработало. Зря конечно автор не завел git-репку по всем урокам, хорошо хоть файлы есть, а то думал вообще - домузгуй это сам с before будет ) Просто у других уроков ссылки на файл не было, и уже не ожидалась, но теперь буду иметь в виду.
@elgrenka
@elgrenka Жыл бұрын
Такая же ошибка выскочила с before. Ладно тут прочитал и узнал, что файлы прикреплены под видео )
@dilmurod9820
@dilmurod9820 3 жыл бұрын
respect то что мне надо спасибо ты крут
@laravelcreative
@laravelcreative 3 жыл бұрын
Благодарю!)
@qr46654
@qr46654 3 жыл бұрын
Отличный урок!
@laravelcreative
@laravelcreative 3 жыл бұрын
Благодарю!)
@Technical_Expert
@Technical_Expert 2 жыл бұрын
array_filter "если параметр не пуст, то он вызовет функцию колбэка" - сказал автор видео на 21:30. Мдя, после таких объяснений у новичков челюсть еще ниже отвисла. Чтобы она не отвисала, добавлю вам простое объяснение. В данном случае функция с единственным параметром занимается тем, что удаляет все пустые поля, оставляя только имеющие значения.
@alexgud6467
@alexgud6467 3 жыл бұрын
странно, при любой фильтрации у меня на страницу выводится что-то не то, вывожу через dd($posts) : Illuminate\Database\Eloquent\Builder {#344 ▼ #query: Illuminate\Database\Query\Builder {#317 ▶} #model: App\Models\Post {#318 ▶} #eagerLoad: [] #localMacros: array:4 [▶] #onDelete: Closure(Builder $builder) {#1132 ▶} #passthru: array:19 [▶] #scopes: array:1 [▶] #removedScopes: [] }
@laravelcreative
@laravelcreative 3 жыл бұрын
Добавь в конце ->get();
@alexgud6467
@alexgud6467 3 жыл бұрын
@@laravelcreative благодарю! извиняюсь за невнимательность
@laravelcreative
@laravelcreative 3 жыл бұрын
Не извиняйся, все хорошо:)
@psihmel349
@psihmel349 3 жыл бұрын
Я тоже на этом запнулся)) так что ты не один такой))
@РусланМягких-д6ш
@РусланМягких-д6ш 2 жыл бұрын
+1. Долго не мог понять в чем проблема.
@starlightx3052
@starlightx3052 2 жыл бұрын
Спасибо большое, теперь мои контроллеры худые и легко читаемые!
@laravelcreative
@laravelcreative 2 жыл бұрын
Благодарю!)
@ivanzolotarev8302
@ivanzolotarev8302 3 жыл бұрын
Добрый день! Большое спасибо за уроки! Есть вопрос: на шаге урока (время 3:29) когда мы делаем /posts?category_id=5 страница становиться недоступной (ERR_TOO_MANY_REDIRECTS). Более точно - такая ситуация возникает после добавления аргумента public function __invoke(FilterRequest $request), в чем может быть причина?
@laravelcreative
@laravelcreative 3 жыл бұрын
Ошибка говорит о том, что ты делаешь редирект на страницу, у которой контроллер тоже делает редирект, скорее всего, либо друг на друга, либо на себя. Добавь return view(), вместе return redirect
@ivanzolotarev8302
@ivanzolotarev8302 3 жыл бұрын
@@laravelcreative Спасибо за ответ! Но к сожалению, результата нет. Для чистоты эксперимента пробовал такой код, ничего не изменилось: class IndexController extends BaseController { public function __invoke(FilterRequest $request) { dd(1111); } }
@laravelcreative
@laravelcreative 3 жыл бұрын
Наверно в реквесте не проходит валидация, происходит редирект назад, и возможно там стоит тоже какой-то редирект) Попробуй все редиректы в контроллерах убрать)
@ivanzolotarev8302
@ivanzolotarev8302 3 жыл бұрын
@@laravelcreative Спасибо! Действительно проблема была в реквесте, т.к. я поставил опцию required на некоторые поля, в уроке ее не было)
@laravelcreative
@laravelcreative 3 жыл бұрын
Ахах бывает)
@ЕвгенийСамусько-д9ш
@ЕвгенийСамусько-д9ш 2 жыл бұрын
Спасибо за уроки! Изучаю с вашей помощью Laravel, очень доступно рассказываете все. Подскажите есть ли у вас урок по реализации фильтра для сайта с использованием elasticsearch?
@андрейпустоселов-г8м
@андрейпустоселов-г8м 2 жыл бұрын
Спасибо за уроки
@esca7a
@esca7a Жыл бұрын
Привет. Фильтрация получилась не такая гибкая как хотелось бы Если мы передаем два параметра , то поиск происходит по последнему. Что в этом случае ?
@salonsuloo
@salonsuloo 2 жыл бұрын
Крутой урок! Спасибо✊
@laravelcreative
@laravelcreative 2 жыл бұрын
Благодарю!)
@sunmoon2098
@sunmoon2098 2 жыл бұрын
самій порлезній урок из всех предідущих видео!)
@laravelcreative
@laravelcreative 2 жыл бұрын
Благодарю)!
@spitzer4077
@spitzer4077 2 жыл бұрын
А я считаю что наоборот. Это урок больше для системных разрабов Laravel, нежели для прикладного использования новичками. Нет возможности понять что к чему, всё слишком догматично и быстро.
@sunmoon2098
@sunmoon2098 2 жыл бұрын
@@spitzer4077 прикол в том что єтого для новисков полно. Стандартная дока, круд какойнибудь, метод ... А тут логика показана а не описание доки!)
@spitzer4077
@spitzer4077 2 жыл бұрын
@@sunmoon2098 но эта логика абстрактна и без понимания откуда концы, куча стандартных переменных и неочевидной логики из разных мест проекта как-то там связаны, но её нельзя связать в голове без глубокого понимания устройства Laravel.. короче правильно сказал автор - пользуйте шаблон и не особо вникайте. До 30го урока у меня всё шло как по маслу, и тут бац... тотальное непонимание чё ваще происходит))) И зачем раздули такой колхоз ради какой-то пагинации, более того, если так правильно, почему сам ларавел об этом не озаботился.. Боюсь представить что там дальше будет.
@evgeniysergeev2708
@evgeniysergeev2708 2 жыл бұрын
У кого будет ошибка ArgumentCountError указываете метод validate, а нужно validateD! Спасибо за уроки.
@АртемАртеменконезабывайвыходит
@АртемАртеменконезабывайвыходит Жыл бұрын
раскажи больше про этот шаблон где больше выборок
@RusIvan2022
@RusIvan2022 2 жыл бұрын
Немного поправлю на query а наверное понятьнее будет query builder
@pfkcskafan
@pfkcskafan 2 жыл бұрын
Отлично, спасибо
@olegkostyuk3537
@olegkostyuk3537 3 жыл бұрын
Здравствуйте ! На 12:40 не понял что за магия произошла, как вы вставили свойтва и методы в AbstractFilter?)
@laravelcreative
@laravelcreative 3 жыл бұрын
А это же копипаст, в описании ссылка на файлик)
@vasyaklishch4184
@vasyaklishch4184 2 жыл бұрын
ВОГОНЬ, БРАТАН ПІДПИСКА І ЛАЙК.
@YasaFit
@YasaFit 2 жыл бұрын
Интересно, чем отличаются этот способ создания объекта $filter = app()->make(PostFilter::class, ['queryParams' => $data]); от этого $filter = new PostFilter($data); может в следующих уроках станет понятней
@prod.wembley3816
@prod.wembley3816 Жыл бұрын
Всякий раз, когда выполняется операция new, закрывается возможность для полиморфизма (поддержка нескольких реализаций на основе общего интерфейса) в данной области видимости. Во избежания этого, было выведено множество порождающих шаблонов проектирования, в том числе и Dependency Injection - реализация которого как раз таки предоставляется с помощью передачи названия класса параметром любого метода либо вызовом app()->make().
@jd-chnl
@jd-chnl 2 жыл бұрын
Здравствуйте! Спасибо за материал, интересно, познавательно и по сути👍 если можно поясните пару нюансов: - для чего создавать интерфейс, сли есть абстрактный класс, который будет корневым так или иначе? - $filter = app()->make(PostFilter::class, ['queryParams' => $data]); на сколько знаю app->make используется для внедрения зависимотсей из настроек контейнера, но тут это не актуально поскольку параметры передаете как в обычный конструктор - как по мне это лишнее выполнение кода. Это просто к слову, я читал ответ про миграцию решения с момента его появления) - в классе PostFilter вы зарегистрировали константы, но не использовали их. Правильно ли я понял что они должны быть использованы в колбеках в билбере в поле column? строки 23, 29, 35, Еще раз спасибо, материал мне понравился!
@BookwormYevgen
@BookwormYevgen 2 жыл бұрын
22:55
@trvtrv3172
@trvtrv3172 2 жыл бұрын
Все хорошо. Но жаль что вы некоторые вещи просто как факт говорите и не объясняете зачем это нужно. Например, зачем писать scope и почему мы это делаем только в трейте
@sviatstupak2162
@sviatstupak2162 2 жыл бұрын
Это конвенция Laravel, автор объяснил же!
@trvtrv3172
@trvtrv3172 2 жыл бұрын
@@sviatstupak2162 Рот закрыл. В реальности ничего просто так не бывает. Надо объяснить почему такое название исторически сложилось. Высокоуровневые тупые программисты
@trvtrv3172
@trvtrv3172 2 жыл бұрын
@@sviatstupak2162 Че молчишь тварь?Scope означает что этот метод работает в eloquen во тобъяснение, а не ну так приянто ну крч не думай что пишешь а просто копируй
@sviatstupak2162
@sviatstupak2162 2 жыл бұрын
@@trvtrv3172 неадекват, спустя 4 месяца узнал и решил поумничать или документацией научился пользоваться?
@trvtrv3172
@trvtrv3172 2 жыл бұрын
@@sviatstupak2162 пес подзаборный
@blackwood3408
@blackwood3408 2 жыл бұрын
Как быть если нужно отфильтровать по нескольким категориям, а не по одной?
@andreyivanchenko6369
@andreyivanchenko6369 Жыл бұрын
Все работает - спасибо! но на этапе добавления самой формы отправки запросов столкнулся с некоторыми нюансами которых жаль что нет в видео - 1 ) Валидация всех данных - если оставлять пустые значение то работает в общем - но если фильтровать только по 1 параметру а указывать валидацию на все поля. Решил этот вопрос так в FilterRequest проверял\добавлял параметры таким способом if (request()->filled('date_to')) { $rules['date_to'] = 'date'; } и так для всех параметров 2). проверка текущего значение в самой форме old() не подходит так как сохраняет значение в сессии - использовал request()->input('date_to', '') 3) момент если есть форма с многими параметрами и отправляем все - получиться строка с пустыми значениям для этого проверял весь $request->all() if (in_array(null, $params)) { $filtered_params = array_filter($params, function ($value) { return !is_null($value); }); return redirect()->route('deposits.index', $filtered_params); } - возможно как-то по другому нужно но пока так
@BookwormYevgen
@BookwormYevgen Жыл бұрын
А зачем тут FilterInterface?? И почему фильтр асбстрактный? Это же можно сделать все в одном классе? Какое практическое применение имеют эти абстракции в конкретно этом проекте?
@irinatagaeva3371
@irinatagaeva3371 2 жыл бұрын
Спасибо за уроки! 👍 А почему не используете для фильтрации when?
@gangster_dude
@gangster_dude 2 жыл бұрын
для меня этот алгоритм сложный. Мозг тормозит и останавливается. С ифами гораздо проще и понятней :) Но ничо, спасибо автору. Буду использовать это садомазо !
@RusIvan2022
@RusIvan2022 2 жыл бұрын
есть пример где нужно получить по условию из связанной таблице?
@evgenn787
@evgenn787 Жыл бұрын
А есть урок где этот фильтр завязывают на кнопки, интерфейс управления? Подскажите пожалуйста номер урока )
@ШпаченкоДмитрий
@ШпаченкоДмитрий 9 ай бұрын
Плиз очень нужно. Может есть ответ
@Cadregich
@Cadregich 2 жыл бұрын
А как через форму отправить эту имитацию запроса, а не вводить в ручную?
@ВикторИванов-т6ч3ъ
@ВикторИванов-т6ч3ъ Жыл бұрын
Видосы огонь. Каждый пересматривал по несколько раз. Для тех кто никогда не сталкивался с ларавелом очень полезно. Но вот откуда и как заполняется AbstractFilter, Filterable, совершенно непонятно. Просто копипаст с видоса.
@Doston_T
@Doston_T 11 ай бұрын
Закреплено же в описании ссылка где можно получить код на эти файлы
@Olegcowboyoleg
@Olegcowboyoleg 10 ай бұрын
@@Doston_TА если не будет ссылки? Просто откуда-то они берутся? Или импортируются из какого-то класса? Если импорт, то откуда?
@ringnull
@ringnull 2 жыл бұрын
У меня не прилетают гет параметры из урла. Что делать?
@Morski1337
@Morski1337 Жыл бұрын
Как сбросить фильтр при перезагрузке страницы?
@alexandr9900
@alexandr9900 2 жыл бұрын
камент для продвижения
@laravelcreative
@laravelcreative 2 жыл бұрын
Благодарю!)
@Timur-j9t8y
@Timur-j9t8y 2 жыл бұрын
Спасибо за видео! А как сделать шаблон для ввода запроса через форму ?
@laravelcreative
@laravelcreative 2 жыл бұрын
Форма + реквесты)
@aleksandrpushnin2244
@aleksandrpushnin2244 2 жыл бұрын
На работе фильтр же в несколько строчек делается) laravel позволяет
@BookwormYevgen
@BookwormYevgen 2 жыл бұрын
Покажи пример
@alcoholic_monk
@alcoholic_monk 2 жыл бұрын
боже, это мне напомнило ужасные коды с ипользованием старых Jquery, как-то всё сложно :c
@laravelcreative
@laravelcreative 2 жыл бұрын
Благодарю!)
@НикитаЛогинов-г5м
@НикитаЛогинов-г5м 2 жыл бұрын
добрый день! подскажите пожалуйста, если все сделал правильно, но, если задать параметр, например /post?id=1, при попытке его получить выдается пустой массив
@jil_jir874
@jil_jir874 Жыл бұрын
Не знаю, но у меня фильтр не хочет работать
@NikolayGavrilov-i3r
@NikolayGavrilov-i3r Жыл бұрын
Спасибо за урок! А как быть, если надо отфильтровать по нескольким id одного из параметров?
@nisorek
@nisorek Жыл бұрын
По аналогии как делали поиск в строках через LIKE используйте оператор IN он принимает строку из значений через запятую
@NikolayGavrilov-i3r
@NikolayGavrilov-i3r Жыл бұрын
@@nisorek Да, спасибо. Уже разобрался :)
@Olegcowboyoleg
@Olegcowboyoleg 10 ай бұрын
Гнал я на автора, всё работает, я разобрался. !!! А почему, если мы просто напишем $posts=Post::filter($filter)->get(); $posts = Post::paginate(2); то пагинация перебивает фильтрацию? Фильтрация куда-то улетучивается.
@Али-т3ч
@Али-т3ч 3 жыл бұрын
Может кто помочь, почему у меня IndexController не принимает параметр (FilterRequest $request)? У меня даже в навбар Post не заходит. Когда убираю FilterRequest заходит в Post, ставлю не заходит, я еще попробовал сделать вручную прям в IndexController валидацию всю и вместо FilterRequest $request поставил Request $request, ответ тот же, не заходит в посты даже, вообщем не принимает любого рода валидацию, в чем может быть проблема?
@Али-т3ч
@Али-т3ч 3 жыл бұрын
Все я нашел ответ на свой вопрос, я реквестах везде указал 'required', он не получал данных и возвращал обратно на страницу))) Поменял везде 'required' на 'string' и все заработало
@laravelcreative
@laravelcreative 3 жыл бұрын
Ахах бывает)
@АлексейБогомолов-з3ц
@АлексейБогомолов-з3ц 2 жыл бұрын
@@Али-т3ч Спасибо за подсказку! Ваш комментарий очень помог, весь вечер искал причину! :)
@Renioxi
@Renioxi 2 жыл бұрын
@@Али-т3ч Спасибо! Я чуть голову не поломал ,что не так! @Laravel Creative а в чем проблема с 'required' ?
@каучукБутадиеновый
@каучукБутадиеновый 2 жыл бұрын
Лучший, спасибо за подсказку
@Dima-sq2rh
@Dima-sq2rh 3 жыл бұрын
Доброго времени суток. Огромное спасибо автору за уроки, крайне хорошее объяснение и подача. Но, несмотря на это возник вопрос. В IndexController мы создаем экземпляр класса PostFilter: $filter = app()->make(PostFilter::class, ['queryParam' => array_filter($data)]). Я правильно понимаю, что это аналогично тому, что если в класс PostFilter добавить public function __construct($queryParam) { parent::__construct($queryParam) } ? Другими словами app()->make(PostFilter::class, ['queryParams' => array_filter($data)]) === при добавлении конструктора написанного выше классу PostFilter $filter = new PostFilter(array_filter($data))? Метод app() - это хелпер, который возвращает инстанс класса Container, который и предоставляет метод make, но так же можно и обратиться к фасаду App - App::make, что аналогично. На какой стадии отработки кода сервис-контейнер заполняется экземплярами класса? В документации есть еще метод makeWith, и в ней сказано, что если экземпляр класса имеет зависимости (в нашем случае PostFilter екстендится от AbstractFilter и AbstractFilter имеет конструктор который принимает аргумент), как в нашем случае, используется метод makeWith, но посмотрев на этот метод в классе Container, я увидел что он просто ссылается на метод make и принимает в себя те же аргументы $abstract и $parameters. Отсюда вопрос: это осталось для совместимости с более ранними версиями Laravel? Еще не совсем понятно зачем нужен FilterInterface, ведь функция apply прописана в AbstractFilter, от которого и екстендится PostFilter и по сути не нужно лезть в код при создании дочернего класса (PostFilter), я пока что не совсем понимаю когда применять интерфейсы) может Вы объясните? И что делает функция before? Честно говоря не понятно как это все работает)
@laravelcreative
@laravelcreative 3 жыл бұрын
Все дело в том, что это просто шаблон фильтра, который кочует из поколения в поколение в таком виде, в котором его первоначально создали. Про интерфейсы я рассказывал в курсе php - это просто инструкция, чтобы разработчики не забывали прописать методы, которые должны быть. Прокинуть параметры можно по разному. Да и сам фильтр можно реализовать самыми разными способами) Это чаще всего утыкается в требования в компании, где человек работает:) Никакой мистики:) Благодарю!)
@Dima-sq2rh
@Dima-sq2rh 3 жыл бұрын
@@laravelcreative Спасибо большое за ответ
@Dima-sq2rh
@Dima-sq2rh 3 жыл бұрын
@@laravelcreative в принципе, почти разобрался, но подскажите пожалуйста еще такой момент: в IndexController мы вызываем метод filter Post::filter($filter), каким образом он вызывается, если этот метод в трейте не указан как static? А вызывается он как статический. При этом имеет 2 аргумента: первый - билдер, а второй фильтр, как раз таки второй мы только и передаем, почему передача только одного аргумента (при чем который в определении функции стоит вторым) в $posts = Post::filter($filter)->paginate(10) не вызывает ошибку и больше того - работает? Так же не понятен момент того, что в определении функции в Filterable передается сам интерфейс, я так понимаю это лишь заглушка чтобы phpStorm не ругался (можно просто вторым параметром указать переменную $filter без указания класса scopeFilter(Builder $builder, $filter))?
@laravelcreative
@laravelcreative 3 жыл бұрын
Это фишка обращения к моделям, любой метод сразу после модели через :: вызывается. Например Post::update() Post::where() Post::find() Вот и всё:) на счет второго не совсем понял вопроса)
@AndreyMoroz
@AndreyMoroz 2 жыл бұрын
Подскажите как сделать в фильтре лимит вывода страниц при пагинации ?
@RusIvan2022
@RusIvan2022 2 жыл бұрын
Post::filter()->paginate(10) - 10 это лимит записей. А лимит страниц исходя из этого.
@sourlemon7200
@sourlemon7200 3 жыл бұрын
Здравствуйте, подскажите, пожалуйста как я могу получить список постов по тегу? В PostFilter в методе tag я получаю список id постов с PostTag по переданному в запрос id тега $postsIds = PostTag::where('tag_id', $value)->get()->pluck('post_id'); Я получаю массив id нужных постов, но что мне с ним делать дальше?) Если просто запихну его так, то получу только пост, id которого был первый в массиве $builder->where('id', $photosIds); Я могу как-то передать в where массив и получить все посты, id которых были в этом массиве? Спасибо!)
@laravelcreative
@laravelcreative 3 жыл бұрын
Попробуй использовать whereIn, посмотри на оф документации, что это.
@sourlemon7200
@sourlemon7200 3 жыл бұрын
@@laravelcreative Супер, спасибо) а я так долго мучался с этим, уже такие костыли понапридумывал
@laravelcreative
@laravelcreative 3 жыл бұрын
@@sourlemon7200 а вот так, тут всё просто)
@YasaFit
@YasaFit 2 жыл бұрын
В трейте Filterable в аргументах передается FilterInterface, и в $filter получаем объект PostFilter. А если этот PostFilter и передавать в аргументе, получаем тот же объект, в чем интересно отличия?
@юрийильиных-б6и
@юрийильиных-б6и 2 жыл бұрын
невнимательно читал комменты, та же проблема с required
@ringnull
@ringnull 2 жыл бұрын
3:07 у меня не работает гет переменные из урла помогите плиз
@РусланМягких-д6ш
@РусланМягких-д6ш 2 жыл бұрын
Проверь параметры валидации в файле реквеста. В title скорее всего стоит required|string с прошлых уроков.
@ringnull
@ringnull 2 жыл бұрын
@@РусланМягких-д6ш Спасибо, проверю
@ringnull
@ringnull 11 ай бұрын
Вместо public function __invoke(IndexRequest $request) надо было FilterRequest писать
@eugenevorontsov7049
@eugenevorontsov7049 2 жыл бұрын
ВОПРОС, пробую ваш шаблон, почему-то не работает если в адресной строке пишу Laravel/posts( что бы вывел всю таблицу), перекидывает на главную, а вот когда пишу Laravel/posts?title=dog&content=dog РАБОТАЕТ( минимум когда два аргумента пишу), если даже только title=dog НЕ РАБОТАЕТ
@андрейпустоселов-г8м
@андрейпустоселов-г8м 2 жыл бұрын
В функциях title, content $builder->where('title', 'like', "%{$value}%"); value в двойных кавычках одинарные не работают! может кто подскажет: не находит трэйт, хотя ошибок VSCode не видит? Все namespace прописаны если функцию прописываю в Post все работает...
@РаджибС
@РаджибС Жыл бұрын
Спасибо, помогло.
@alexeyguch816
@alexeyguch816 2 жыл бұрын
Привет! Понравился шаблон =) Как я понял, array_filter($data) необязателен, в смысл можно без функции передать массив. Однако, если он тут (в этом конкретном примере) не нужен, это не значит, что где-то в будущем не пригодится. К тому же он по умолчанию чистит пустые, false, null элементы массива. По смыслу, вроде, понимаю зачем нужен метод before, но пока не понимаю, где и как мне это может пригодится. Нужно больше знаний =) Благодарю за труд!
@laravelcreative
@laravelcreative 2 жыл бұрын
Да можно убрать бефоре, если не нужен) Он просто часть шаблона. Благодарю)!
@Technical_Expert
@Technical_Expert 2 жыл бұрын
@@laravelcreative , может стоит вообще убрать всё, что не используется, если шаблон изначально не прост для понимания и эти лишние ничего не делающие функции лишь усложняют понимание?
@сергейжиглинский-й8п
@сергейжиглинский-й8п 2 жыл бұрын
@@Technical_Expert жестко ты конечно))))))) я лично просто закомментировал не нужные методы и функции
@Technical_Expert
@Technical_Expert 2 жыл бұрын
@@сергейжиглинский-й8п с надеждой, что когда нибудь закоментированные функции пригодятся и ты в них разберёшься? Скорее всего это произойдет ровно никогда, просто будут висеть как мусор, отвлекая внимание впустую.
@AxelMacaroff
@AxelMacaroff Жыл бұрын
Странно, что у автора сработал метод "public function categoryId"( PostFilter file), т.к. ищется же "category_id" из массива queryParams ... Но в целом методика очень любопытна. Автору респект.
@AxelMacaroff
@AxelMacaroff Жыл бұрын
Вопрос снят... нашел где автор схитрил ---> self::CATEGORY_ID => [$this, 'categoryId'], а я, по привычке, подставил константу ( self::CATEGORY_ID => [$this, self::CATEGORY_ID ] ).
@ВячеславТараканов-б9и
@ВячеславТараканов-б9и 2 жыл бұрын
А зачем каждый раз после альт + джей говорить Женя? В этом тайный смысл какой-то заложен?)
@laravelcreative
@laravelcreative 2 жыл бұрын
Чтобы не путали с Гошей - G:)
@КостяПросто-э3п
@КостяПросто-э3п 2 жыл бұрын
😆Ну да, Gоша и Jеня разные люди))
@СергейМогилевич-ш2в
@СергейМогилевич-ш2в 2 жыл бұрын
Хороший канал и очень информативно главное доступно. У меня возникла трудность Unresolvable dependency resolving [Parameter #0 [ array $queryParams ]] in class App\Http\Filters\AbstractFilter не могу понять причину. Заранее благодарен.
@mihaelkirienko1471
@mihaelkirienko1471 2 жыл бұрын
$filter = app()->make(PostFilter::class, ['query_params' => array_filter($data)]); Нужно изменить query_params на queryParams .
@СергейМогилевич-ш2в
@СергейМогилевич-ш2в 2 жыл бұрын
@@mihaelkirienko1471 спасибо большое
@BohdanAds
@BohdanAds 2 жыл бұрын
Declaration of App\Http\Filters\AbstractFilter::apply(Illuminate\Database\Eloquent\Builder $builder) must be compatible with App\Http\Filters\FilterInterface::apply(PhpParser\Builder $builder)
@subduedTunes
@subduedTunes 2 жыл бұрын
ахфыхафыха, я пытался найти ошибку почему url запрос не работает, я просто забыл прописать php artisan serve, я гений мегамозг!
@chokoladis
@chokoladis Жыл бұрын
После добавления request в контроллер : "Сайт выполнил переадресацию слишком много раз."
@laravelcreative
@laravelcreative Жыл бұрын
Видимо переходишь на страницу с данной страницы и он снова возвращает в этот реквест:)
@chokoladis
@chokoladis Жыл бұрын
​@@laravelcreative решил проблему, с прошлой request остались require в полях. Сейчас вопрос по тому как соединить пагинацию и фильтрацию, чтобы не спадала?
@allay138
@allay138 Жыл бұрын
Это услажненная реаелизация мног лишнего . Можно сделать намного проще
@РусланВалиев-з2щ
@РусланВалиев-з2щ 6 ай бұрын
я фикшу уже 4тую ошибку это просто запдерелный пиздец
@artemunix5223
@artemunix5223 Жыл бұрын
раскрой эту тему глубже на более понятном примере
@laravelcreative
@laravelcreative Жыл бұрын
В платном курсе - 3 варианта фильтров с реализацией в интерфейсе)
@artemunix5223
@artemunix5223 Жыл бұрын
@@laravelcreative это каком
@ШпаченкоДмитрий
@ШпаченкоДмитрий 9 ай бұрын
@@laravelcreative Где купить? Конкретно эту реализацию интересует (у меня вывод в таблице). И есть ли что-то что бы можно было сортировать по столбцам.
@pernik85
@pernik85 2 жыл бұрын
Ну такое, на Yii1,2 это всё реализовано
@laravelcreative
@laravelcreative 2 жыл бұрын
Круто:)
@alexandriv2174
@alexandriv2174 2 жыл бұрын
я так и не въехал нафига городить хер проссышь такой огород когда можно самому простенький запрос состряпать - помоему тут извращенством садамаза попахивает
@laravelcreative
@laravelcreative 2 жыл бұрын
А если тебе скажут сделать фильтр для 5-6 моделей и дают на это день?)
@КоляСолдат
@КоляСолдат 2 жыл бұрын
Ты учишь laravel, страдай.
@spitzer4077
@spitzer4077 2 жыл бұрын
Без файлов из описания не получилось бы, всё работает, но есть вопросы: 1) Зачем городить такой колхоз если в 6 строк в целом работали? 2) Если так правильно, почему это не является базовым функционалом Laravel? 3) Поля title, content, etc.. явно упоминались раза 4-5, а вам не кажется что это, говоря мягко, не универсально? Ещё раз, для пагинации прописывать в разных файлах поля по 4-5 раз.. уровень удобства - запредельный.
@Technical_Expert
@Technical_Expert 2 жыл бұрын
По сути автор сам не вдаётся в подробности того, что рассказывает, иначе бы не давал шаблоны, в которых половина функций не используется, а некоторые вещи можно было бы записать проще для понимания. Видимо у него такой стиль программирования - набрать как можно больше шаблонов и использовать их. Возможно это самая верная техника по быстрому освоению программирования. Если вам нужны такие подробности, то я например сам ищу доп информацию в сети, судя по ответам автора в комментариях, он не утруждается подробностями.
@RusIvan2022
@RusIvan2022 2 жыл бұрын
ответы: 1. изучи solid и патерны и все поймешь. 2. Потому что ларавел это фреймворк, а не цмс 3.вообще не ясен вопрос. Пагинация передается методом paginate() в контроллере и в виде выводиттся метод что бы показать ссылки для страниц.
@Technical_Expert
@Technical_Expert 2 жыл бұрын
@@RusIvan2022 , видимо, 3 вопрос был о том, что предложенное решение с шаблоном гораздо более объёмное, нежели изначальная версия с описанием запроса в одном методе.
@spitzer4077
@spitzer4077 2 жыл бұрын
@@RusIvan2022 3. В идеале в одном, максимум в 2-х местах поля надо положить, но когда больше, то польза от этого всего сомнительна
@trvtrv3172
@trvtrv3172 2 жыл бұрын
УРОК НАЧИНАЕТСЯ С 10 МИНУТЫ АХХАХА НЕ БЛАГОДАРИТЕ
@alexandriv2174
@alexandriv2174 2 жыл бұрын
и да опять поисковая строка - ну какой заказчик в продакшине будет юзать эту дичь - вы не показали какая польза как это будет юзать заказчик!!!!!!!!!!!!!!!!!!!!!
@laravelcreative
@laravelcreative 2 жыл бұрын
Ахаха) пользуют еще как пользуют)
@АндрійОстапович-к5й
@АндрійОстапович-к5й Жыл бұрын
Звук в сраці
@laravelcreative
@laravelcreative Жыл бұрын
Благодарю!:)
@optobeats
@optobeats 2 жыл бұрын
Подскажите пожалуйста, постоянно выбивает ошибку Symfony\Component\HttpFoundation\Response::setContent(): Argument #1 ($content) must be of type ?string, App\Http\Filters\SourceFilter given, called in C:\xampp\htdocs\projects\fixit.loc\vendor\laravel\framework\src\Illuminate\Http\Response.php on line 72 и не хочет отрабатывать getCallbacks() в SourceFilter. В чем может быть причина? А то все перелопатил и не могу понять что не так. Реквест приходит нормально массив, а дальше стопорится...
@olegkostyuk3537
@olegkostyuk3537 3 жыл бұрын
что-то подзавис я на этом уроке, смотрел его уже несколько раз и не могу понять , где допустил ошибку, при переходе на страницу posts получаю ошибку BadMethodCallException Call to undefined method App\Models\Post::filter() , думаю что я просто где-то что-то не праильно написла. думаю что это в indexcontroller.php но не понимаю что. вроде методы все добавлены
@laravelcreative
@laravelcreative 3 жыл бұрын
Добавь в модель Post траит use Filterable;
@olegkostyuk3537
@olegkostyuk3537 3 жыл бұрын
@@laravelcreative большое спасибо)
Free, fast, full text search: Laravel + Typesense
22:04
Aaron Francis
Рет қаралды 14 М.
My scorpion was taken away from me 😢
00:55
TyphoonFast 5
Рет қаралды 2,7 МЛН
Cat mode and a glass of water #family #humor #fun
00:22
Kotiki_Z
Рет қаралды 42 МЛН
А вы знакомы с Beacon API?
5:23
АйТи Синяк
Рет қаралды 4,6 М.
ООП в JavaScript. Классы, свойства, методы
29:02
WebDev с нуля. Канал Алекса Лущенко
Рет қаралды 76 М.
Laravel курс с нуля, база. 16. Bootstrap в laravel
11:15
Laravel Creative
Рет қаралды 32 М.
AJAX - учимся посылать GET, POST запросы
24:23
WebDev с нуля. Канал Алекса Лущенко
Рет қаралды 87 М.
My scorpion was taken away from me 😢
00:55
TyphoonFast 5
Рет қаралды 2,7 МЛН