Download the PHP package devtools-marvellous/rest-actions without Composer
On this page you can find all versions of the php package devtools-marvellous/rest-actions. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package rest-actions
Amondar Rest Actions.
По любым вопросам образаться на e-mail - [email protected]
!!!!!! Только для Laravel >= 5.5+
Capability table
Laravel | Filter |
---|---|
5.5.* | ^1.0.* |
5.6. - 5.7. | ^2.0.* |
5.8.*+ | ^3.0.* |
5.8.*+, AmondarSextant | ^4.1.* |
Для установки
Подключение
Для корректной работы всех возможностей пакета рекомендуется установка пакетов:
- MYSQL Amondar's Sextant..
Подключите RestActions трейт к контроллеру. Обратите внимание, что функция public function serverFunction обязательна для наличия в контроллере.
Класс ServerResponse на прямую совместимый с любым проектом не поставляется вместе с текущим трейтом. Ввиду особенности овтетов каждого проекта и апи. Пример реализации можно найти в этом репозитории. Необходимые функции для обертки данного класса:
Пример использования:
Работа с Nemesis Filter ans Sorting
Для передачи параметров в фильтр используется ключ - conditions
Уникальный параметр для работы с подсчетам, можно добавить limit=count в запрос и получить в ответе просто количество. Удобно использовать такой подход для работы с подсчетом нотификаций, например.
Работа без репозитория
Для использования без репозитория, укажите переменной modelClass имя класса модели с которым вдеется работа в текущем контроллере.
Работа через репозиторий
Обычно, при работе через репозиторий, трейт ищет в самом репозитории функцию с таким же названием, как и навзание функции в контроллере. Однако это не совсем удобно при некоторых реализациях. Чтобы переопределить функцию внутри репозитория:
Предача параметров из урла в методы репозитория
Для передачи параметров в репозиторий достатоно указать в методе репозитория необходимых параметров, однако тут есть нюансы. Стандартный пример передачи параметров:
Функция в репозитории:
Еслив репозитории параметр имеет другое имя класса, например, при наследовании, тоогда можно передать параметр по его имени:
Функция в репозитории:
Трейт автоматически определит необходимые параметры и передаст их в репозиторий. В качестве реквеста будет предеан указанный реквест, а далее параметры из массива parameters. ВАЖНО: Так же можно использовать параметры для функций с многофункциональным использованием. Например:
Допустив в примере выше необходимо передать в функцию параметр $someParams=true, но его нет в урле и роуте реквеста:
Так же, если ваш класс репозитория имплементирует методы setModel для установки модели и model для возврата модели, то в репозитории можно не передавать на вход, параметр модели его импелментации. RestActions сам попробует установить модель из репозитория, если сможет найти ее в route.
Работа с views
Некоторые функции трейта умеют загружать вьюшки. На данный момент с вьюшками работают 2(две) функции - index и show. Для указания обработчику использовать необходимую вьюшку:
Обратите внимание, что для index вьюшки будет доступен объект $data в котором будет выборка из базы данных. В методе show - это переменная "snake case" от имени модели. Например, SubCategory, превращается в - $sub_category. Так же есть функция для расширения данных всех вьюшек, напиример для построения и вывода данных меню:
Нюансы и расширения
Для работы с указанным выше пакетом написаны фукнции для ограничения выборок и расширения ответов. Функции index & show. Переопределите представленные ниже функции, чтобы изменить работу фильтра и вид ответов. Ключ parameters - это массив параметров для фильтра:
Если в роуте Ваша модель использует не id, а любой другой параметр, переопределите стандартную функцию ларавела для моделей - getRouteKeyName внутри модели.
Многие в своих роутах используют бинды, но для трейта это довольно сложно. Чтобы ограничить баинд модели, с которогой в данный момент ведется работа, переопределите следующую функцию и добавте в нее свои ограничения. Функция используется во всех функциях, где требуется работы с текущей установленной моделью и при выборке параметров из роута:
Для остальных запросов, типа index & show & update & delete, можно переопределить функццию getBaseFilterQuery.
Как можно заметить функция принимает на вход имя текущей операции, поэтому можно создавать любые бызовые запросы для любых действий включая создание, обновление и удаление.
Наследование контроллеров
При прямом наследвоании, может так случиться, что нам необходимо добавить недостающий экшн. Для того, чтобы не повторять весь массив actions
:
Метод getActions
вызывается единоразово при выборе необходимого к вызову метода. Не забудьте подключить трейт дополняемого метода.
Зачастую при снаследовании у нас меняется валидационный реквест. Поэтому была добавлена переменная - restActionsRequest
Пример:
ВАЖНО: в примере выше, репозиторий должен быть наследником репозитория родительского контроллера.
Расширение через создание экземпляра контроллера в другом контроллере
Для функций index & show доступна функция дополнительной настройки трансформации. Например, вам требуется создать экземпляр класс контроллера, выбрать данные из базы, но изменить ответ таким образом, чтобы они подходил вашим требования. В таком случае вы можете воспользоваться ключем - ajaxTransform
Так же можно устанавливать изменяемые параметры нужного действия до вызова самого действия
Cache
Кеширование доступно на каждый экшн выборки - index, show.
По любым вопросам образаться на e-mail - [email protected]
Управление экшнами
Любой экшн указанный в контроллере расширяет эти параметры:
Описание:
- request - реквест для валидации запроса
- model - переопределение модели для работы с запросами. NULL - если задан репозиторий или определена глобальная модель.
- view - пусть к вьюшке(по правилам blade) которую необходимо отдать на фронт в ответ на запрос не требующий json.
- conditions - дополнительные статические пкараметры фильтра.
- transformer - Параметр класса трансформера для конкретного экшна. Если не зада, то используется обычный toArray.
- ajaxTransform - праметр определябщий необходимость вызова трансформера для ответа информации по данному методу. Если указано false - используется toArray().
- simpleView - праметр определябщий необходимость на запрос html страницы подгрузить только ее, без подключения работы с бд и фильтром. data = collection([]).
- onlyAjax - праметр определябщий работу исключительно при запросе json данных и с использование соответствующих headers.
- onlyBrowser - праметр определябщий работу исключительно при запросе html страницы.
- cache - массив параметров для кеширования. См. выше.
- protectedLimit - Параметр переорпдееляющий максимально возможный лимит для единовременного выбора фильтруемых данных. Служит защитой от подвешивания сервера при выборке огромного количества из бд без пагинации. Может быть так же установлен глобальный лимит при помощи переопределения глобальной переменной protected static $PROTECTED_LIMIT, по умолчания = 100 записей;
- sextantRestrictions - Интеграция sextant restrictions. Для более подробной информаци прочтите соответствующий раздел документации sextant фильтра;