Download the PHP package alhimik1986/yii2_crud_module without Composer

On this page you can find all versions of the php package alhimik1986/yii2_crud_module. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package yii2_crud_module

yii2 ajax crud module

Latest Stable Version Latest Unstable Version License Total Downloads Monthly Downloads Daily Downloads

Отличнейший модуль Gii CRUD для генерации кода одностаничных ajax-приложений на Yii2 framework.

Демонстрация: http://tfb7950x.bget.ru/application/web/index.php?r=film

Видео

Характеристики

Ограничения:

TODO:

УСТАНОВКА:

Скачивается с помощью composer. В папке приложения в файле composer.json дописать строчку:

или в командой строке ввести:

Затем в файле config/web.php добавить следующие строчки:

Прейдите по адресу: http://localhost/index.php?r=gii или http://localhost/gii . Далее перейдите по ссылке "AjaxForm CRUD Generator".

Расширенное использование сгенериованного кода

Философия библиотеки ajax-form.js

Заглянем в файл views/@conroller_id/index/_js_table.php. В нем мы видим, что-то вроде:

Так вот, в этот "экземпляр класса" передаются параметры. Эти параметры перезаписывают параметры по умолчанию. Параметры по умолчанию можно увидеть в библиотеке ajax-form.js, назначение каждого параметра указано в комментариях. Значения, переданные в экземпляр этого класса, перезаписывают параметрами по умолчанию, и помещаются в переменную "settings". Переменная "settings" часто используется и передается во многие функции в виде аргумента. Кстати, параметры по умолчанию содержат почти все системные функции библиотеки ajax-form.js, поэтому, передавая параметры в экземпляр можно полностью менять поведение этой библиотеки.

Чтобы было понятно, как все устроено, я расскажу философию этой библиотеки.

Давайте представим как бы работал CRUD, если бы мы его делали своими руками при помощи jQuery:

Для всего этого нам потребуются 3 ajax-запроса с функциями обратного вызова (callbacks), которые вызываются одна за другой только в случае успешного результата. Но, т.к. нам еще нужно передать им параметры (например, селектор кнопки, url запроса и т.д.), то заключим их в 3 соответствующих объекта:

  1. Для появления формы, назовем его create
  2. Для отправки формы, назовем его submit
  3. Для обновления таблицы после успешной отправки формы, назовем его afterSubmit.

Схематично в коде они будут выглядеть так:

Описание передаваемых объектов в класс ajaxForm()

Объект create

Каждый объект будет содержать некоторые поля, давайте прикинем, какие. Нам нужно указать условия, при которых нам нужно вызывать ajax-запросы, как правило, это клик по кнопке. Соответственно, нам нужно указать селектор (например, .ajax-form-button-create) и тип события (как правило, "click"). Также, при желании можно указать делегатор, но по умолчанию стоит document, так что, если его не указывать, то ничего страшного не произойдет. Таким образом, поля будут иметь следующие названия: "delegator", "selector", "on" - соответственно, делегатор селектор и событие, в jQuery они будут выглядеть вот так:

При срабатывании условий делается ajax-запрос, т.е. нам еще нужно указать параметры этого запроса. Параметры задаются в поле "ajax". Имена параметров совпадают с именами параметров в обычной jQuery методе $.ajax({}). Но для большей гибкости в поле "ajax" нужно передавать не объект, а функцию, которая возвращает объект. Если функция вернет значение false, то ajax-запрос не будет выполнен, а вместе с ним и не будет выполняться последующая цепочка (submit и afterSubmit). Схематично в коде все будет выглядеть примерно так:

Где settings, как уже говорилось ранее, - это смесь переданных параметров и параметров по умолчанию. Т.е., все, что мы передали в ajaxForm, можно использовать в функциях обратного вызова. Иными словами через переменную settings мы имеем доступ к любому параметру. Например, settings.create.selector - селектор, который мы задали. Чтобы иметь доступ к элементу, благодаря которому была вызвана функция обратного вызвана, он находится в settings.create.$ . Как мы поняли, с ним можно работать как с обычным jQuery-элементом, например, .

В случае успешного запроса вызывается функция обратного вызова "success", имеющая аргументы data и settings, где data - принятые данные. Следует учесть, что data содержит только значение поля content, который содержится в ответной части. Формат ответной части описан ниже.

Также следует учесть, что метод success должен возвращать jQuery-объект принятой формы. Далее этот объект будет содержаться в settings.form.$ и он требуется для внутренней обработки (например, позиционирование в центре экрана, сделать форму перемещаемой, привязывает события нажатия кнопки "Сохранить", "Отмена", "Закрыть" и т.д.)

Сразу после метода success, вызывается метод afterSubmit. Он нужен для последующей обработки формы, например, мы хотим, чтобы в нашей форме выпадающие списки были проинициированы плагином select2.js, а текстовые области (textarea) - WYSIWYG-редактором. Пример кода:

Если мы не хотим, чтобы наша форма была перемещаемой и растягиваемой, то нужно перезаписать метод _handleForm() в пустую функцию. Пример:

Таким же образом можно перезаписать любую другую системную функцию: _success, _afterSuccess и т.д. Подробнее узнать о назначении этих функциий можно, заглянув в ajax-form.js.

Объект submit

Объект submit имеет примерно те же "поля" и "методы":

Если была нажата кнопка "Сохранить", то подставляем один адрес и параметры, а если нажата кнопка "Удалить", то подставляем другие адрес и параметры запроса.

Также есть методы: notValid(data, settings) - вызывается при ошибках валидации, и error(xhr, settings) - вызывается, если возникла внутренняя ошибка сервера. И у них есть соответствующие системные методы: _notValid(data, settings) и _error(xhr, exception). Соответственно, если мы хотим отключить вывод ошибок валидации или вывод внутренней ошибки сервера, то вот пример кода:

Если нам нужно выводить ошибки валидации не на всех полях, а только на одном первом попавшемся поле, то советую использовать такой код:

Объект afterSubmit

В Объекте afterSubmit используется гораздо меньше параметров. И он вызывается после submit и только в случае успешного результата.

По идее, мы должны были сделать ajax-запрос с заданным адресом и параметрами, чтобы обновить таблицу. Но есть способ попроще и он более правильный: нам нужно заново запустить поиск в таблице и никакого ajax-запроса посылать не нужно. Скрипт, который осуществляет поиск в таблице, находится в шаблоне @vendor/alhimik1986/yii2_js_view_module/views/jsPlugins/_ajaxTable.php Если в какой-то момент нужно запустить поиск в таблице, то в этой таблице нужно запустить триггер 'search':

Прочие объекты формы ajaxForm

Если вы не используете ActiveForm и у вас включен enableCsrfValidation, то сервер может ругаться, что ему не передают csrf-токены, чтобы этого не было, в ajaxForm можно передавать эти токены.

Часто нам нужно видеть процесс загрузки или обработки данных сервером. Для этого нам нужен индикатор загрузки, который появляется во время отправки ajax-запроса и исчезает после завершения этого запроса. В шаблоне _js_table.php мы указываем элемент, перед которым нужно расположить этот индикатор (поле loadingElem), и задаем css-стили этого индикатора (loadingStyle). Суммарно наши прочие объекты ajaxForm выглядят примерно так:

Формат ответа сервера на ajax-запрос:

При ajax-запросе сервер должен формировать ответ в формате JSON. Данный объект должен содержать следующие части:

Чтобы не заморачиваться с форматом, имеется класс alhimik1986\yii2_crud_module\web\JsonController, который наследует стандартный контроллер yii\web\Controller. В нем уже встроены необходимые методы, с которыми мы будем работать для формирования ответа. Пример реализации можно увидеть в нашем сгенерированном контроллере. Пример:

Если модель будет содержать ошибки валидации, то ajax-form.js отыщет поля, в которых есть ошибки, и в родительском элементе (.form-group .field-modelName-fieldName) добавит класс .has-error. Если в форме будет отсутствовать родительский класс (.form-group .field-modelName-fieldName), то, на всякий случай, ajax-form.js в текстовых полях добавляет классс .input-error, в их надписях (label) добавить класс .label-error, но, чтобы они подсвечивались красным цветом, нужно в css добавить

Если же ответ сервера не будет соответствовать заданному формату (например, при внутренней ошибке сервера), то ajax-form.js выведет во всплывающее окно все содержимое, которое он получил, т.е. выводит на экран весь текст ошибки.

Несколько crud-ов на одной странице

Да, имеется такая возможность. Для этого нужно сгенерировать отдельно каждый crud. Затем нужно будет объединить содержимое шаблонов index.php в какой-то один, и подгрузить в него _js_table.php и _js_plugins.php с обоих crud-ов. Далее, в шаблонах _js_table.php нужно найти методы, которые генерируют url-адреса: и добавить в адрес соответствующие контроллеры, например, .

Помните, что эти crud-ы не мешают друг другу благодаря тому, что они находятся на разных (см. _js_table.php), т.е. разных тегах, которые имеют разные id. И помните, что появляющаяся форма одного crud-а не удаляет форму другого crud-а, т.к. эти формы имеют уникальные id и они указаны в ajaxForm:


All versions of yii2_crud_module with dependencies

PHP Build Version
Package Version
Requires php Version >=5.4.0
alhimik1986/yii2_js_view_module Version ^1.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package alhimik1986/yii2_crud_module contains the following files

Loading the files please wait ....