public static function createConditions($cond_array, $report_id)
 {
     $conditions = [];
     $ids = array_filter(ArrayHelper::getColumn($cond_array, 'id'));
     //*
     $known_cond = ArrayHelper::index(ReportsConditions::find()->where(['and', ['id' => $ids], ['report_id' => $report_id]])->orderBy('order')->with('report')->all(), 'id');
     //*/
     //        $known_cond =
     foreach ($cond_array as $k => $cond_params) {
         if ($cond_params['id'] && isset($known_cond[$cond_params['id']])) {
             $cond_item = $cond[$cond_params['id']];
             $cond_item->order = $k + 1;
             $conditions[] = $cond_item;
         } else {
             $conditions[] = new self(['report_id' => $report_id, 'order' => $k + 1]);
         }
     }
     return $conditions;
 }
 protected function findCondition($id)
 {
     if (($model = ReportsConditions::findOne($id)) !== null) {
         return $model;
     } else {
         throw new NotFoundHttpException('The requested page does not exist.');
     }
 }
 public function beforeDelete()
 {
     if (parent::beforeDelete()) {
         return ReportsConditions::deleteAll(['report_id' => $this->id]);
     } else {
         return false;
     }
 }
    <?php 
echo $form->field($model, "operation")->dropDownList(ReportsConditions::getOperationsList());
?>

    <?php 
echo $form->field($model, "attribute_name")->dropDownList(ArrayHelper::map($model->report->availableProps, 'attribute', 'label'));
?>

    <?php 
if (isset($model->operation)) {
    ?>

        <?php 
    echo $form->field($model, "function")->dropDownList(array_map(function ($v) {
        return $v::getLabel();
    }, ReportsConditions::getFunctionsList($model->operation)), ['prompt' => Yii::t('reportmanager', 'Select...')]);
    ?>

        <?php 
    if ($model->functionObj->paramType) {
        ?>

            <?php 
        if (isset($model->config['values']) && is_array($model->config['values'])) {
            ?>
                <?php 
            echo $form->field($model, "value")->dropDownList($model->config['values'], ['prompt' => Yii::t('reportmanager', 'Select...'), 'multiple' => true, 'size' => 16]);
            ?>
            <?php 
        } else {
            ?>
}], 'function', ['class' => 'yii\\grid\\ActionColumn', 'template' => '{delete}', 'buttons' => ['delete' => function ($url, $model, $key) {
    // <a href="/rep/delete?id=1" title="Удалить" aria-label="Удалить" data-confirm="Вы уверены, что хотите удалить этот элемент?" data-method="post" data-pjax="0"><span class="glyphicon glyphicon-trash"></span></a>
    return 1 === 1 ? Html::a('<span class="glyphicon glyphicon-trash"></span>', $url, ['title' => Yii::t('reportmanager', 'Delete')]) : '';
}]]]]);
?>
    <?php 
echo Html::submitButton(Yii::t('reportmanager', 'Save'), ['class' => 'btn btn-primary']);
ActiveForm::end();
Pjax::end();
?>
</div>
<?php 
$this->registerJs('
    $("#add_condition").click(function(event) {
        event.preventDefault();
        $.pjax.reload({container:"#conditions", type: "POST", push: false, replace: false});  //Reload GridView
/*
        var maxValue = Math.max.apply(Math,$(\'#table_conditions tbody tr\').map(function(){ return this.getAttribute("data-index");}));
        var number = maxValue + 1;
        var col1 = ' . json_encode(Html::dropDownList('ReportsConditions[_XXX_][attribute_name]', NULL, ArrayHelper::map($report->availableProps, 'attribute', 'label'), ['class' => 'form-control', 'id' => 'reportsconditions-_XXX_-attribute_name'])) . ';
        var col2 = ' . json_encode(Html::dropDownList('ReportsConditions[_XXX_][operation]', NULL, ReportsConditions::getOperationsList(), ['class' => 'form-control'])) . ';
        var html = \'<tr data-index="\' + number + \'">\' +
                \'<td>\' + col1 + \'</td>\' +
                \'<td>\' + col2 + \'</td>\' +
                \'<td></td>\' +
                \'<td></td>\' +
                \'</td>\';
        $("#table_conditions tbody").append(html.replace(/_XXX_/g,number));
*/
    })
');