Как вывести в модальном окне таблицу с зависимыми данными extjs
        Всем привет. Пытаюсь вывести в своём компоненте в модальном окне таблицу с релизами, кликнув по кнопке из actions на предмете из другой таблицы:
Нашёл вот это решение, но не получается отфильтровать результат в таблице в модальном окне.
bezumkin.ru/training/course1/2202/
    
    
                                                                                
            // Releases
        $array['actions'][] = [
            'cls' => '',
            'icon' => 'icon icon-archive',
            'title' => $this->modx->lexicon('extras_package_releases'),
            //'multiple' => $this->modx->lexicon('extras_packages_update'),
            'action' => 'releasesPackage',
            'button' => true,
            'menu' => true,
        ];Нашёл вот это решение, но не получается отфильтровать результат в таблице в модальном окне.
bezumkin.ru/training/course1/2202/
,baseParams: {
	action: 'mgr/newsletter/subscriber/getlist'
	,newsletter_id: config.record.id
}Выводится вся таблица, а нужно только чтобы выводило релизы по ключу package_id. Делаю следующим образом:releasesPackage: function(grid, e, row) {
        if (typeof(row) != 'undefined') {this.menu.record = row.data;}
        var id = this.menu.record.id;
        MODx.Ajax.request({
            url: Extras.config.connector_url,
            params: {
                action: 'mgr/package/get',
                id: id
            },
            listeners: {
                success: {fn:function® {
                        if (this.windows.releasesPackage) {
                            this.windows.releasesPackage.close();
                            this.windows.releasesPackage.destroy();
                        }
                        this.windows.releasesPackage = MODx.load({
                            xtype: 'extras-package-window-releases',
                            record: r,
                            listeners: {
                                success: {fn:function() { this.refresh(); },scope:this}
                            }
                        });
                        this.windows.releasesPackage.fp.getForm().reset();
                        this.windows.releasesPackage.fp.getForm().setValues(r.object);
                        this.windows.releasesPackage.show(e.target);
                    },scope:this}
            }
        });
    },А вот так выглядит вывод окна:Extras.window.ReleasesPackage = function (config) {
    config = config || {};
    if (!config.id) {
        config.id = 'extras-package-window-releases';
    }
    Ext.applyIf(config, {
        title: _('extras_package_releases'),
        width: 677,
        autoHeight: true,
        url: Extras.config.connector_url,
        baseParams: {
            action: 'mgr/release/getlist'
        },
        fields: this.getFields(config)
    });
    Extras.window.ReleasesPackage.superclass.constructor.call(this, config);
};
Ext.extend(Extras.window.ReleasesPackage, MODx.Window, {
    getFields: function () {
        return [{
            title: _('extras_package_releases'),
            xtype: 'extras-grid-releases',
            layout: 'anchor',
            cls: MODx.modx23 ? '' : 'main-wrapper',
            pageSize: 5
        }];
    },
    loadDropZones: function () {
    }
});
Ext.reg('extras-package-window-releases', Extras.window.ReleasesPackage);Каким образом ещё можно снизу в модальном окне убрать кнопку Сохранить?    Комментарии: 4
                Надо ещё и в процессоре добавлять выборку по id. Вот тут почитай, думаю, будет ясно:
ilyaut.ru/reposts/object-relations-in-customextra/
                    ilyaut.ru/reposts/object-relations-in-customextra/
                Спасибо. Но у меня не вышло. После того как добавляю в процессор:
                    $c->leftJoin('ExtrasPackages', 'ExtrasPackages', '`ExtrasPackages`.`id` = `'.$this->classKey.'`.`package_id`');
        $c->select($this->modx->getSelectColumns($this->classKey, $this->classKey));
        $c->select('`ExtrasPackages`.`id` as `package_id`');
        $c->groupby($this->classKey . '.package_id');
        $package_id = trim($this->getProperty('id'));
        if ($package_id) {
            $c->where(array(
                'package_id' => $package_id
            ));
        }Таблица перестаёт отображаться вообще.            
                А всё. Разобрался. Надо было так писать:
                    $c->leftJoin('ExtrasPackages', 'ExtrasPackages', 'ExtrasPackages.id = ExtrasReleases.package_id');
        $c->select(array($this->modx->getSelectColumns('ExtrasReleases', 'ExtrasReleases')));
        $c->select(array('ExtrasPackages.id as package_id', 'ExtrasPackages.name as package_name'));
        $c->groupby($this->classKey . '.id');
        $package_id = trim($this->getProperty('package_id'));
        if ($package_id) {
            $c->where(array(
                'package_id' => $package_id
            ));
        }            
                Кнопками управлять так.
При объявлении окна, внутри
                    При объявлении окна, внутри
Ext.applyIf(config, {после fields: this.getFields(config)добавляем еще кнопки (по умолчанию их 2 штуки, а вот вам пример на 4 штуки)buttons: [
            {
                text: 'Моя кнопка',
                scope: this,
                handler: function () {
                    alert("Работает");
                }
            },
            {
                text: config.cancelBtnText || _('cancel'),
                scope: this,
                handler: function () {
                    config.closeAction !== 'close' ? this.hide() : this.close();
                }
            },
            {
                text: config.saveBtnText || _('save'),
                scope: this,
                handler: function () {
                    this.submit(false);
                }
            },
            {
                text: config.saveBtnText || _('save_and_close'),
                cls: 'primary-button',
                scope: this,
                handler: function () {
                    this.submit(true);
                }
            }
        ]            
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.