Verwendung des Autocompleters von Shopware

Wie kann ich den Auto-Completer von Shopware am besten in einem Plugin verwenden?

Was meinst du denn genau mit AutoCompleter? Bitte mehr Infos…

Ich meine die Datei: „engine/backend/modules/articles/js/autocompleter.js“ In der Zwischenzeit bin ich auf die Datei: „engine\backend\modules\blog\blogEdit.php“ gestoßen. Den Aufruf habe ich angepasst und es funktioniert. Kann man das Ganze so formatieren, das der Nutzer einen Namen Auswählt (z.B. Artikelname), aber bei der Auswahl die id in das zugeordnete Input-Feld eingetragen wird?

Kann man statt dem Token (Zeichenkette) auch einen Controller verwenden?

Für das nachladen der Daten? Ja - www.shop.de/backend/NAME_DES_CONTROLLER … DER_ACTION als Target.

Wo muss ich das Target angeben?

Stell doch mal ein Code-Beispiel ein, wie du es aktuell probierst - also so ganz komme ich noch nicht dahinter, was du vor hast…

Codeausschnitt aus der Detail.tpl (Backend) {extends file="backend/index/parent.tpl"} {block name="backend\_index\_css" append}<script type="text/javascript" src="%7Blink%20file='engine/backend/js/mootools.js'%7D"></script><script type="text/javascript" src="%7Blink%20file='engine/backend/modules/articles/js/autocompleter.js'%7D"></script><link href="%7Blink%20file='engine/backend/modules/articles/js/autocompleter.css'%7D" rel="stylesheet" type="text/css"><script type="text/javascript"> document.addEvent('domready', function() { var token = ['Test1', 'Test2']; new Autocompleter.Local('email', token, { 'minLength': 1, 'multiple': false, 'selectMode': 'pick', 'overflow': true }); }); </script>{/block} {block name="backend\_index\_body\_inline"} …<input name="textOrdernumber" type="text" id="email" class="w75" value="">… {/block} Kann man die Daten für „Token“ direkt über einen Controller laden? Am günstigsten währe mit Übergabe der „eingegebenen“ Zeichenkette, um die Daten gleich zu filtern. Wie ist es am besten möglich, das der Nutzer z.B.: „Test1“ auswählt, aber beim Absenden der Daten statt „Test1“ eine ID (z.B. 1) übergeben wird.

Hey, die Komponente ist unter http://digitarald.de/project/autocompleter/ dokumentiert - die kennt auch einen „Remote“-Modus, über die man die Daten lesen kann. Alternativ würde ich empfehlen, das ganze auf Basis von ExtJS aufzubauen - dazu findest du ja ein Tutorial in den Labs - da gibt es ebenfalls eine fertige Remote-Combobox, die man verwenden kann!

Ich wollte mir nicht extra JS-Dateien herunterladen und die vorhandenen verwenden. Da finde ich nur Autocompleter.Local.

Dann verwende Ext.form.ComboBox - das steht auch per Default zur Verfügung und funktioniert komplett Remote. Also ExtJs Sourcen einbinden. Und dann: <script> Ext.onReady(function(){ var storeArticles = new Ext.data.Store({ url: '{url module=backend controller=CouponsAdmin action=getArticles}' ,{literal} reader: new Ext.data.JsonReader({ root: 'items', totalProperty: 'total', id: 'id' }, [ {name: 'name'}, {name: 'ordernumber'}, {name: 'supplier'}, {name: 'id'} ]){/literal} }); new Ext.form.ComboBox({ store: storeArticles, displayField:'name', lazyRender: false, mode: 'remote', triggerAction: 'all', fieldLabel: 'Artikel', forceSelection: true, itemId: 'articleCombo', valueField: 'id', hiddenName: 'articleID', typeAhead: false, loadingText: 'Searching...', width: 570, applyTo: 'myTest', pageSize:10, hideTrigger:false, allowBlank:false, listeners: { 'expand': { fn:function(combobox){ },scope:this} } }) }); </script> Und dann im HTML-Code: <input type="text" id="myTest" size="20"> Muss ggf. noch etwas modifiziert werden, aber vom Prinzip her funktioniert das so. Samples: http://dev.sencha.com/deploy/dev/exampl … ombos.html Doku: http://www.sencha.com/deploy/dev/docs/