Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Всем привет.
Предлагаю ознакомиться с пакетом для реализации фильтрации и сортировки списков.
Пакет написан для и тестировался с Laravel 4, но если немного пострараться, можно заставить работать с любым PHP фреймворком, в том числе и с Laravel 3, само собой. Обращайтесь в соц. сетях за помощью в случае проблем.
Документацию на русском я еще не успел написать, но есть на английском:
https://github.com/mobileka/scope-applicator
Минимум PHP 5.4.
Легче всего использовать с репозиториями. Вот статья в моем блоге, объясняющая этот паттерн: http://blog.armen.im/laravel-and-repository-pattern/
Если все еще не поняли, советую купить / скачать Laracast Джеффри Уэя - https://laracasts.com/lessons/repositories-simplified.
Есть и другие статьи в интернете.
Ваши репозитории должны расширять Mobileka\ScopeApplicator\Repositories\LaravelRepository, после этого у вас появится метод applyScopes(), который принимает первым аргументом объект модели, а вторым - массив из скоупов, которые можно применить к запросу.
Про скоупы в Laravel 4 можно почитать здесь: http://laravel.com/docs/eloquent#query-scopes.
Пример и возможности кофигурации смотрите в документации.
Буду рад услышать критику и предложения, особенно касательно документации.
Не в сети
Спасибо, симпатичное расширение, особенно приятно, что оно сразу хорошо документировано.
Но мне лично например психологически комфортнее потратить полчаса и руками прописать роуты с методами контроллеров, которые вызывают репозитории с нужными скоупами. Хотя в некоторых случая, типа админки с массой объектов с разнообразной фильтрацией, твой подход вполне может быть оправдан.
Не в сети
Спасибо, симпатичное расширение, особенно приятно, что оно сразу хорошо документировано.
Но мне лично например психологически комфортнее потратить полчаса и руками прописать роуты с методами контроллеров, которые вызывают репозитории с нужными скоупами. Хотя в некоторых случая, типа админки с массой объектов с разнообразной фильтрацией, твой подход вполне может быть оправдан.
Спасибо за отзыв.
Это не совсем мой подход. Идея взята из Ruby on Rails сообщества: у них есть gem под названием has_scope.
Scope Applicator не пишет за вас роуты и методы контроллера. Его призвание избавить контроллер и вас от необходимости парсить URL руками и вызывать методы репозиториев в зависимости от результатов. Это делает контроллеры гораздо тоньще и изящнее, а еще не надо придумывать свои велосипеды и задавать себе вопрос "куда бы вынести все это?".
В остальном все так же, как и раньше: вы создаете роут, потом контроллер, модель, описываете скоупы в модели, создаете репозиторий, передаете его в контроллер и вызываете его методы, но также передаете туда конфиг скоупов. Можно и иначе использовать, конечно, но это более или менее стандартный подход.
Не в сети
Страницы 1