diff --git a/action/adapter/gridView/handler/Model.php b/action/adapter/gridView/handler/Model.php
index 68f17fb..ae72754 100644
--- a/action/adapter/gridView/handler/Model.php
+++ b/action/adapter/gridView/handler/Model.php
@@ -40,19 +40,25 @@ public function run() {
$arguments[] = ['id' => $ids];
if (is_array($method)) {
$class = $method[0];
- $count = $class::$method(...$arguments);
+ $result = $class::$method(...$arguments);
} else if (is_callable($method)) {
- $count = $method(...$arguments);
+ $result = $method(...$arguments);
} else {
- $count = $class::$method(...$arguments);
+ $result = $class::$method(...$arguments);
}
$response = new \execut\actions\action\Response();
- $flashes = [
- 'kv-detail-success' => strtr($this->successMessage, ['#' => $count]),
- ];
- $response->content = \yii::$app->response->redirect($this->getReferer());
- $response->flashes = $flashes;
+ if (is_array($result)) {
+ $response->format = 'json';
+ $response->content = $result;
+ } else {
+ $count = $result;
+ $flashes = [
+ 'kv-detail-success' => strtr($this->successMessage, ['#' => $count]),
+ ];
+ $response->content = \yii::$app->response->redirect($this->getReferer());
+ $response->flashes = $flashes;
+ }
return $response;
}
diff --git a/widgets/HandlersButton.php b/widgets/HandlersButton.php
index a0f335e..e1b9974 100644
--- a/widgets/HandlersButton.php
+++ b/widgets/HandlersButton.php
@@ -9,6 +9,7 @@
namespace execut\actions\widgets;
use execut\yii\jui\Widget;
+use yii\bootstrap\Modal;
use yii\helpers\Html;
use yii\helpers\Url;
@@ -33,6 +34,11 @@ public function run()
'idAttribute' => $this->idAttribute,
];
$this->registerWidget();
+ Modal::begin([
+ 'header' => '
Исправьте ошибки
',
+ 'id' => $this->id . '-modal',
+ ]);
+ Modal::end();
return Html::tag('i', '', [
'id' => $this->id,
'class' => 'btn btn-' . $this->type . ' glyphicon glyphicon-' . $this->icon,
diff --git a/widgets/assets/HandlersButton.js b/widgets/assets/HandlersButton.js
index d3de9a7..a466327 100644
--- a/widgets/assets/HandlersButton.js
+++ b/widgets/assets/HandlersButton.js
@@ -10,6 +10,7 @@
var t = this,
el = t.element;
t._gridEl = $(t.options.gridSelector);
+ t._modalEl = $('#' + el.attr('id') + '-modal');
},
_initEvents: function () {
var t = this,
@@ -28,7 +29,20 @@
url += '&' + t.options.idAttribute + '[]=' + selectedIds[key];
}
- $.get(url);
+ $.get(url, function (r) {
+ var resultError = [];
+ for (var modelName in r) {
+ for (var attribute in r[modelName]) {
+ for (var errorKey in r[modelName][attribute]) {
+ var error = r[modelName][attribute][errorKey];
+ resultError[resultError.length] = modelName + ': ' + error;
+ }
+ }
+ }
+
+ t._modalEl.find('.modal-body').html(resultError.join('
'));
+ t._modalEl.modal('show');
+ });
}
});
},
diff --git a/widgets/assets/HandlersButton.min.js b/widgets/assets/HandlersButton.min.js
index efea702..8e02940 100644
--- a/widgets/assets/HandlersButton.min.js
+++ b/widgets/assets/HandlersButton.min.js
@@ -1 +1 @@
-(function(){$.widget("execut.HandlersButton",{_gridEl:null,_create:function(){var a=this;a._initElements();a._initEvents()},_initElements:function(){var a=this,b=a.element;a._gridEl=$(a.options.gridSelector)},_initEvents:function(){var a=this,b=a.element;b.click(function(){var c=a._gridEl.yiiGridView("getSelectedRows"),f=a._getMessage(c.length||a.options.totalCount);if(confirm(f)){var d=a.options.url;if(d.search("\\?")==-1){d+="?"}for(var e=0;e"));a._modalEl.modal("show")})}})},_getMessage:function(a){var b=this,c=b.element;return b.options.confirmMessage.replace("#",a)}})})();
\ No newline at end of file