Расширения от HimikLab

Выкладываем свои наработки
biconcave
Сообщения: 2
Зарегистрирован: 2015.01.11, 15:24

Re: Расширения от HimikLab

Сообщение biconcave »

Спасибо! )
himiklab
Сообщения: 17
Зарегистрирован: 2014.07.19, 20:13

Re: Расширения от HimikLab

Сообщение himiklab »

Nill писал(а):Быть может нужно работать со всей таблицей БД? Если есть постраничная разбивка и мы попробуем отсортировать на второй странице, то снова получим 0,1 и так далее.

Или, как вариант, использовать текущие значения sortOrder в отсортированном гриде, например 2, 8, 10. При перетаскивании 10 вверх, остальные смещаются вниз 2 к 8, 8 становиться 10.
Как такой вариант?
https://github.com/himiklab/yii2-sortab ... 0da39f9101
Аватара пользователя
Nill
Сообщения: 50
Зарегистрирован: 2014.07.04, 10:54

Re: Расширения от HimikLab

Сообщение Nill »

Спасибо! Я-то уже пересортировку добавил, не стал мучатся) Попробую Ваш алгоритм.
A.A.
de.dazar
Сообщения: 5
Зарегистрирован: 2015.05.03, 13:27

Re: Расширения от HimikLab

Сообщение de.dazar »

Доброго времени суток!
Столкнулся с проблемами при использовании виджета jqgrid.
А именно виджет рендерится (запрос к серверу http://server/frontend/web/index.php?r=country/esmview), но не получает данные из таблицы из JqGridActiveAction. Или выполняется JqGridActiveAction, но в результате выводятся данные в json формате без отображения виджета (запрос к серверу http://server/frontend/web/index.php?r= ... on=request). Перепробовал различные варианты, поискал ответы по сети, но ничего не нашел. Подскажите где я делаю, что то неправильно/ Буду очень признателен

Таблицу с данными и модель использовал из обучения (http://www.yiiframework.com/doc-2.0/gui ... bases.html)
Исходный код контроллера CountryController.php

Код: Выделить всё

<?php

namespace frontend\controllers;

use himiklab\jqgrid\actions\JqGridActiveAction;
use yii\web\Controller;
use yii\data\Pagination;
use app\models\Country;
use yii\db\ActiveQuery;
use yii\base\View;

class CountryController extends Controller
{
    public function actionIndex()
    {
        $query = Country::find();

        $pagination = new Pagination([
            'defaultPageSize' => 5,
            'totalCount' => $query->count(),
        ]);

        $countries = $query->orderBy('name')
            ->offset($pagination->offset)
            ->limit($pagination->limit)
            ->all();

        return $this->render('index', [
            'countries' => $countries,
            'pagination' => $pagination,
        ]);


    }

    public function actionEsmview(){

        return $this->render('esmview');
    }

 public function actions(){
    return ['grid'=> [
        'class' => JqGridActiveAction::className(),
        'model' => Country::className(),
        'scope' => function ($query) {
                /** @var \yii\db\ActiveQuery $query */
                $query->select(['code', 'name', 'population']);
                 }
            ],
        ];

    }
}

?>
исходный код easmview.php

Код: Выделить всё

<?php

use himiklab\jqgrid\JqGridWidget;
use yii\helpers\Url;

  echo JqGridWidget::widget([
    'requestUrl' => Url::toRoute('country/grid'),
    'gridSettings' => [
        'colNames' => ['Code', 'Name', 'Population'],
        'colModel' => [
            ['name' => 'code', 'index' => 'code', 'editable' => true],
            ['name' => 'name', 'index' => 'name', 'editable' => true],
            ['name' => 'population', 'index' => 'population', 'editable' => true]
        ],
        'rowNum' => 5,
        'autowidth' => true,
        'height' => 'auto',
    ],
    'pagerSettings' => [
        'edit' => true,
        'add' => true,
        'del' => true,
        'search' => ['multipleSearch' => true]
    ],
    'enableFilterToolbar' => true,


])
?>
de.dazar
Сообщения: 5
Зарегистрирован: 2015.05.03, 13:27

Re: Расширения от HimikLab

Сообщение de.dazar »

Нашел решение.
Надо поправить исходный код в файле JqGridWidget.php:

Код: Выделить всё

$gridSettings['url'] = $this->requestUrl . '?action=request';
на следующий:

Код: Выделить всё

$gridSettings['url'] = $this->requestUrl . '&action=request';
Так надо поправить все запросы по коду дальше.
himiklab
Сообщения: 17
Зарегистрирован: 2014.07.19, 20:13

Re: Расширения от HimikLab

Сообщение himiklab »

Выделил в отдельное расширение используемый во многих моих проектах модифицированный GridView
yii2-gridview-ajaxed-widget
В чём его особенности:

Все манипуляции происходят в модальном окне без перехода на другую страницу.
Обновления грида через pajax.
Банально получается более лаконичный CRUD код.
Всякие дополнительные фичи вроде вывода сообщения или возврата файла после отсылки формы.
Ответить