Download the PHP package i-avatar777/yii2-service-form-ajax without Composer

On this page you can find all versions of the php package i-avatar777/yii2-service-form-ajax. 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-service-form-ajax

FormAjax

Сервис для yii2 для для валидации и исполнения формы по AJAX. Делает вместро submit с обновлением страницы - ajax запрос и вызов JS метода success.

Концепция

Чтобы форма передавалась по AJAX.

После возвращения выводились ошибки.

Исключение составляет в том что нельзя по AJAX передать файл, или сложно, поэтому применяется виджет для онлайн загрузки где по AJAX передается только файл.

\iAvatar777\services\FormAjax\ActiveRecord::attributeWidgets - здесь указываются виджеты и их настроки для вывода в форме

Так указывается форма на странице:

Если вы используете эту ActiveForm то в виде модели для нее надо использовать эту модель ActiveRecord или эту Model. В них прописана функция возврата ошибки валидации getErrors102. Или вы можете использовать свои но скопировать эту функцию в свою модель.

В виде обработчика формы главным считается DefaultFormAjax он прописывается в контроллере так:

Где model - это модель формы, а add - это идентификатор действия (Action::id).

Чтобы форма отправляла проверку на этот обработчик, надо вформе прописать

Отличие от стандартной обработки по AJAX в YII2

Установка

Показывание WIDGET

В функции attributeWidgets указывается соответствие поля и виджета. Этот виджет будет рисоваться автоматически если в форме указано:

<?= $form->field($model, 'image') ?>

Отключить кнопку

Если надо не показывать кнопку и внучную отработать то можно так:

``

Особенность

Событие submit на Enter вызывается два раза, причем только первый раз. Выяснить почему так выяснить не удалось. В связи с этим для того чтобы обойти поставил обход через установку параметра delta = 1000 мс, в течение которого нельзя вызвать повторно событие мой submit.

Использование в контроллере при добавлении или обновлении

Если модель класса \yii\db\ActiveRecord или \yii\base\Model то код для сохранения в контроллере такой:

Если модель класса \iAvatar777\services\FormAjax\ActiveRecord или \iAvatar777\services\FormAjax\Model то в них существует функция getErrors102() и тогда код уменьшается и можно писать так:

Пример использования

Если сохранение вызывается в Model то parent:: будет вызывать onBeforeUpdate и onAfterUpdate

Стандартные действия

Для упрощения стандартных действий в библиотеке есть стандартный набор обработчиков действий:

Использование если на странице форма добавления

В контроллере прописываю в функции actions()

Параметр view не обязателен, если не указан то используется идентификатор действия (action).

Событийная модель для \iAvatar777\services\FormAjax\ActiveRecord

Как они описываются и что туда епередается?

function onBeforeUpdate() {}

Модель запуска событий

Например delete

  1. attributeWidgets() ['events']['onBeforeDelete']
  2. Widget:onBeforeDelete
  3. \yii\db\ActiveRecord::delete()
  4. Widget:onAfterDelete
  5. attributeWidgets() ['events']['onAfterDelete']

То есть можно написать свой обработчик если надо и вместе с этим в самом виджете использовать дополнительные обработки.

Например это актуально если в форме выводятся значения в одном формате а хранятся в БД в другом формате тогда можно а обработчике виджета прописать приведение типа.

Или например это актуально если нужно удалить картинку по факту удаления записи.

три сценария показа формы

  1. Всего три сценария показа формы

Если в форме производится изменение формата хранения поля то нужно учитывать что на момент рисования формы в поле должно хранится один и тот же формат поля.

Если производится конвертация форматов то лучшей практикой будет такое:

Я могу сделать конвертацию в onAfterLoadDb из YYYY-mm-dd в dd.mm.YYYY а в событии onBeforeUpdate из dd.mm.YYYY в YYYY-mm-dd то при валидации в поле будет формат dd.mm.YYYY, при выводе формы будет dd.mm.YYYY При загрузке формы значение будет загружено в формате dd.mm.YYYY поэтому ничего менять не нужно

Если я хочу сохранять (держать значение в формате DateTime) то как должна быть конвертация? Как должна проводиться валидация? Как должно выводиться значение в форме в виджете? Например: Я могу сделать конвертацию в onAfterLoadDb из YYYY-mm-dd в DateTime в событии onAfterLoad делается конвертация из dd.mm.YYYY в DateTime валидировать нужно введенное значение от пользователя формата DateTime. в событии onBeforeUpdate из DateTime в YYYY-mm-dd В виджете рисования будет из формата DateTime

Так как по факту сохранения формы действие заканчивается то после сохранения формы она уже не отрисовывается.

Виджеты

Базовый класс: \iAvatar777\services\FormAjax\Widget

Виджеты предназначены для того чтобы можно было в них вызывать события для обработки постуивших данных.

Например в виджете с датой указывается дата в формате dd.mm.yyyy для валидации она должна быть в формате dd.mm.yyyy, при сохранении она должна быть в виде yyyy-mm-dd

Пример функции в виджете

Инициализация формы после простой html выдачи

Иногда возникает необходимость обработать, навесить обработчики формы после выдачи простого HTML. Тогда чтобы форма работала, нужно вызвать функцию

Получение значений полей формы

Иногда возникает необходимость получить значение поля, но нестандартным способом. Например из редактора такста. Тогда в виджете задается функция получения значения поля

Если функции в виджете нет то значени поля будет выбираться по ID поля INPUT. Собираются только те поля которые перечислены полями (INPUT) в форме.

Пример скрипта очистки значений из serrializeArray:

Пример скрипта для замены простого поля:


All versions of yii2-service-form-ajax with dependencies

PHP Build Version
Package Version
Requires php Version >=5.5.0
yiisoft/yii2 Version *
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 i-avatar777/yii2-service-form-ajax contains the following files

Loading the files please wait ....