id ; $filter = [] ; $params_action = ['parent_model' => $parent_classname, 'relation' => $grid_classname, 'in_modal' => 1] ; if (isset( $grid_info['grid_filter'] ) && is_array($grid_info['grid_filter'])) { foreach($grid_info['grid_filter'] as $pf_key => $pf_val) { //error_log(date('Y-m-d H:i:s') . ": '${pf_key}' => \$model->" . substr($pf_val, 1) ."\n\n", 3, "/wamp/logs/my-errors.log"); $filter_property = (strcmp(substr($pf_val,0,1), "$") === 0) ? substr($pf_val, 1) : null ; $filter[$grid_search][$pf_key] = is_null($filter_property) ? $pf_val : $model->$filter_property ; $params_action[$pf_key] = $filter[$grid_search][$pf_key] ; //error_log(date('Y-m-d H:i:s') . ": filter=". $filter[0] . "\n\n", 3, "/wamp/logs/my-errors.log"); } }; error_log(date('Y-m-d H:i:s') . ": params_action=". serialize($params_action) . "\n\n", 3, "/wamp/logs/my-errors.log"); $insert_params = $update_params = $delete_params = $params_action ; $cmd_guardar = '' ; $agregar_button = '' ; if ($grid_editar) { if ($model->isNewRecord) { $cmd_guardar = "alert('Es un nuevo registro, vamos a guardar el registro para continuar') ; var action = $('form#${parent_model}-form-tabs').attr('action') ; $('form#${parent_model}-form-tabs').attr('action', action + '&redir_update=1') ; $('form#${parent_model}-form-tabs').submit(); return true;" ; } $insert_params[0] = "$grid_model/create" ; $agregar_button = Html::button('', [ 'insert-url' => Url::to($insert_params), 'class'=> 'glyphicon glyphicon-plus btn btn-success', 'id'=> 'modalAgrega' . $grid_classname . 'Button', 'data-pjax' => 0, 'onclick' => " ${cmd_guardar} $('#${modal_name}').modal('show') .find('#${modal_content}') .load($(this).attr('insert-url')); ", ]) ; $campos[] = [ 'class' => '\kartik\grid\ActionColumn', 'header' => 'Acciones', 'hiddenFromExport' => true, 'template' => '{update}{delete}', 'buttons' => [ 'update' => function ($url, $model) { $parent_path = explode('/', $_GET['r']) ; $parent_id = $parent_path[0] ; $parent_model = StringHelper::basename(Inflector::id2camel($parent_id)) ; $grid_classname = StringHelper::basename($model->ClassName()) ; $grid_class_id = Inflector::camel2id($grid_classname ) ; $update_params = [ $grid_class_id . "/update", 'parent_model' => $parent_model, 'relation' => $grid_classname, 'id' => $model->id, 'in_modal' => 1, ] ; $modal_name = 'modalAction' . $parent_model . '_' . $grid_classname ; // Utilizar el mismo modal que el del insert $modal_content = $modal_name . "Content" ; return Html::a('', '' , [ 'title' => 'Actualizar', 'update-url' => Url::to($update_params), 'id'=> 'modalActualiza' . $grid_classname . 'Button', 'data-pjax' => 0, 'onclick' => " //alert('modal_name: ${modal_name}, modal_content = ${modal_content}') ; $('#${modal_name}').modal('show') .find('#${modal_content}') .load($(this).attr('update-url')); return false ; " ]); }, 'delete' => function($url, $model) { $parent_path = explode('/', $_GET['r']) ; $parent_id = $parent_path[0] ; $parent_model = Inflector::id2camel(StringHelper::basename($parent_id)) ; $grid_classname = StringHelper::basename($model->className()) ; $grid_class_id = Inflector::camel2id($grid_classname ) ; $pjax_container = "${parent_id}-${grid_class_id}-gv-pjax"; $delete_params = [ Inflector::camel2id($grid_classname) ."/delete", 'id' => $model->id, 'in_modal' => 1, ] ; return Html::a('', false, [ 'id'=> 'modalElimina' . $grid_classname . 'Button', 'class' => "ajaxDelete-${parent_id}-${grid_class_id}" , 'delete-url' => Url::to($delete_params), 'pjax-container' => $pjax_container, 'data-pjax' => 0, 'title' => 'Eliminar', ]); } ], ]; } $gvsearchModel1 = new $grid_searchfullname(); if ($model->isNewRecord) { // Si es nuevo registro entonces el grid va a ser vacĂ­o error_log(date('Y-m-d H:i:s') . basename(__FILE__, '.php') . ":" . __LINE__ . ":Grid : Filter: es nuevo registro \n\n", 3, "/wamp/logs/my-errors.log"); $query = $grid_modelfullname::find()->where('1=2'); $gvdataProvider1 = new ActiveDataProvider([ 'query' => $query, ]); } else { $gvdataProvider1 = $gvsearchModel1->search($filter, $campos); } $gvdataProvider1->pagination->pageSize = 1000 ; echo GridView::widget([ 'dataProvider' => $gvdataProvider1, 'id' => "$parent_model-$grid_model-gv", // 'filterModel' => $searchModel, 'pjax' => true, 'columns' => $campos, 'responsive'=>true, 'hover'=>true, 'condensed'=>true, 'floatHeader'=>false, 'export' => false, 'toggleData' => false, 'panel' => [ 'type'=>'info', 'before'=> $agregar_button, 'showFooter'=>false ], 'showPageSummary' => $grid_summary, 'pageSummaryRowOptions' => ['class' => 'kv-page-summary warning', 'id' => "$parent_model-$grid_model-SummaryRow"], ]); ?>
[], // default options ]); $inject_js = isset($grid_info['inject_js']) ? $grid_info['inject_js'] : '' ; $this->registerJs( <<< EOT_JS $(document).on('ready pjax:success', function () { // console.log("Entro pjax:success") ; $(".ajaxDelete-$parent_model-$grid_model").on('click', function (e) { e.preventDefault(); var deleteUrl = $(this).attr('delete-url'); var pjaxContainer = $(this).attr('pjax-container'); krajeeDialog.confirm("Quiere eliminar el registro?", function (result) { if (result) { $.ajax({ url: deleteUrl, type: 'post', error: function (xhr, status, error) { krajeeDialog.alert('Hubo un error al eliminar el registro.'); } }).done( function (data) { $.pjax.reload({container: '#' + $.trim(pjaxContainer)}); } ); } } ); }); $inject_js ; }); EOT_JS ); ?>