PHP code example of i-avatar777 / yii2-service-form-ajax

1. Go to this page and download the library: Download i-avatar777/yii2-service-form-ajax library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

i-avatar777 / yii2-service-form-ajax example snippets


 $model = new \avatar\models\validate\CabinetSchoolFilesCloudSave(); 

class CabinetBlogController extends CabinetBaseController
{
    public function actions()
    {
        return [
            'add' => [
                'class'    => '\iAvatar777\services\FormAjax\DefaultFormAjax',
                'model'    => '\avatar\models\forms\BlogItem',
            ],
        ];
    }
}

class ProductImage extends \iAvatar777\services\FormAjax\ActiveRecord
{
    
    public function attributeWidgets()
    {
        return [
            'image' => [
                'class'    => '\iAvatar777\widgets\FileUpload7\FileUpload',
                'update'   => \avatar\controllers\CabinetSchoolPagesConstructorController::getUpdate(),
                'settings' => \avatar\controllers\CabinetSchoolPagesConstructorController::getSettingsLibrary($this->_school_id, $this->_type_id),
                'events'   => [
                    'onDelete' => function ($item) {
                        $r = new \cs\services\Url($item->image);
                        $d = pathinfo($r->path);
                        $start = $d['dirname'] . '/' . $d['filename'];

                        File::deleteAll(['like', 'file', $start]);
                    },
                ],
            ],
        ];
    }

}

if (Yii::$app->request->isPost) {
    if ($model->load(Yii::$app->request->post()) && $model->validate()) {
        $s = $model->save();
        return self::jsonSuccess($s);
    } else {
        $fields = [];
        foreach ($model->attributes as $k => $v) {
            $fields[$k] = Html::getInputId($model, $k);
        }
        return self::jsonErrorId(102, [
            'errors' => $model->errors,
            'fields' => $fields,
        ]);
    }
}

if (Yii::$app->request->isPost) {
    if ($model->load(Yii::$app->request->post()) && $model->validate()) {
        $s = $model->save();
        return self::jsonSuccess($s);
    } else {
        return self::jsonErrorId(102, $model->getErrors102());
    }
}

class CabinetBlogController extends CabinetBaseController
{
    public function actions()
    {
        return [
            'add' => [
                'class'    => '\common\services\FormAjax\DefaultFormAdd',
                'model'    => '\avatar\models\forms\BlogItem',
                'view'     => '@avatar/views/blog/add',
            ],
        ];
    }
}

public function onAfterLoadDb($field) 
{

}

class Widget extends \yii\base\Widget
{
    public function get_field_value()
    {
        $id = 'field-' . Html::getInputId($this->model, $this->attribute);
        $name = Html::getInputName($this->model, $this->attribute);
        
        return <<<JS
function (fields) {
    
    // очищенный результат
    var rows;
    var serializeArray = $(formSelector).serializeArray();
    // функция зачистки, учитывая что значений может быть много то алгоритм такой, прохожусь по всему массиву, если втретилось это поле то не вклчаю его в результат, остальное включаю.
    for (var i=0; i < serializeArray.length; i++) {
        if (serializeArray[i].name == '{name}') {
            // делаю замену
            rows.push({name: 'name', value: '1'});
        } else {
            // добавляю
            rows.push(serializeArray[i]);
        }
    }
    
    return rows; 
}
JS;
    }
}
js
$('#formc2ff52cf').submit(function(ret) {
    form1.isStart = true;
    form1.thisStart = (new Date()).getTime();
    
    if (form1.lastStart == -1) {
        form1.lastStart = form1.thisStart;
    } else {
        if (form1.lastStart + form1.delta > form1.thisStart) {
            form1.isStart = false;
        }
    }
    
    if (form1.isStart) {
        // AJAX
    }

    return false;
});
 \iAvatar777\services\FormAjax\ActiveForm::end(['isHide' => true])