ich versuche im Backend den Resourcen-Tab in den Artikeldetails zu erweitern. Konkret möchte ich ein zusätzliches Inputfeld nach dem Namen bei den Downloads integrieren.
Jedoch scheitere ich bereits an dem einfachen Überschreiben der entprechenden Extjs-Datei. Die Artikeldetails lassen sich bei aktiven Plugin nicht mehr öffnen.
Auszug aus Bootstrap.php
/**
* Registers all necessary events and hooks.
*/
private function registerEvents()
{
$this->subscribeEvent(
'Enlight_Controller_Action_PostDispatch_Backend_Article',
'onArticlePostDispatch'
);
}
public function onArticlePostDispatch(Enlight_Event_EventArgs $args)
{
$controller = $args->getSubject();
$view = $controller->View();
$request = $controller->Request();
$view->addTemplateDir( __DIR__. '/Views');
//if the controller action name equals "load" we have to load all application components
if ($request->getActionName() === 'load') {
$view->extendsTemplate('backend/shop_aware_resources/article/view/resources/downloads.js');
}
}
Um mögliche Fehlerquellen zu vermeiden, mache ich nur einen einfaches Überschreiben und implementiere zunächst noch nicht das zusätzliche Inputfeld. Doch schon das schlägt anscheinend fehl.
Ich bin über jede Hilfe dankbar, da ich schon set mehreren Tagen dran sitze und absolut ratlos bin.
Ich hab nun eine Lösung für die Speicherung der Attribute gefunden. Dazu war es nötig ‘Shopware.apps.Article.controller.Detail’ zu überschreiben.
//{block name="backend/article/controller/detail" append}
Ext.define('Shopware.apps.ShopAwareResources.controller.Detail', {
override: 'Shopware.apps.Article.controller.Detail',
/**
* Event listener function of the resources component.
* Fired when the user clicks the add download button.
*
* @event
* @param [Ext.grid.Panel] The download grid
* @param [Ext.form.Panel] The download panel for the link
*/
onAddDownload: function(grid, form) {
var me = this, model,
store = grid.getStore(),
values = form.getValues();
if (!form.getForm().isValid()) {
return;
}
if (form.getForm().getRecord()) {
model = form.getForm().getRecord();
form.getForm().updateRecord(model);
} else {
model = Ext.create('Shopware.apps.Article.model.Download', values);
var attrRecord = Ext.create('Shopware.apps.Article.model.DownloadAttribute');
attrRecord.set('ggShopIds', values['attribute[ggShopIds]']);
model.getAttributes().add(attrRecord);
}
store.add(model);
form.getForm().reset();
}
});
//{/block}