Er kannte es nicht
Wie kann man das Video bitte nicht kennen?!
Wie kann man das Video bitte nicht kennen?!
Hier findest sich ein gutes Beispiel zum Import von Artikeln, Kategorien, etc. über die Shopware PHP API: http://wiki.shopware.de/_detail_641_444.html
Wenn man sich ein wenig nach dem richtet und in der Shopware Importer Klasse (connectors/api/import/shopware.php) stöbert, kann man ganz leicht seinen eigenen Datenstamm per API importieren.
Eben musste ich das lesen:
$import->sArticle($article_data, array("update", false));
Es wird ein Array als Parameter verwendet, allerdings kann man dort nur einen Wert übergeben. Und zwar ist Key 1 der Name des Parameters und Key 2 der Wert. Wie bekloppt ist das bitte?
Wenn später an der Stelle noch ein, zwei weitere Parameter benötigt werden, so muss man das Design Grundlegend ändern. Und zwar zur einzig richtigen Schreibweise:
$import->sArticle($article_data, array("update" => false, 'destination' => 'testNode'));
Also Kinders daran denken – Wenn ihr Array Parameter einsetzt, dann bitte erweiterbare, denn nichts ist schlimmer als wenn man später wieder etwas dran hin Pfuschen muss um kompatibel zu bleiben!
Gestern ist dieses Problem bei mir aufgetreten, und ich habe keine Lösung gefunden. Wahrscheinlich liegt es am WSDL, welches von Lotus Domino generiert wurde. Dies beinhält komplexe Strukturen an denen die Standard PHP SOAP Extension wohl scheitert.
So sah mein Code bis dahin aus:
<?php $client = new SoapClient('http://meinsoapserver.de/?WSDL'); $response = $client->__soapCall('getArticles');
Leider warf er immer folgenden Fehler:
SOAP-ERROR: [Client] Encoding: Violation of encoding rules
Mehr oder weniger aus Verzweiflung habe ich dann mal die “NuSOAP” Bibliothek getestet, welche SOAP ohne die PHP Extension implementiert und darüberhinaus noch Caching, usw. was mich aber in dem Moment nicht interessiert hat ;-)
<?php $client = new nusoap_client('http://meinsoapserver.de/?WSDL', true); $response = $client->call('getArticles');
Taterataaa, und schon gehts.
Ein kleines “Abfallprodukt” aus einem App Server, den ich eben geschrieben habe.
<?php $url = 'http://linux-doku.de/feed'; $feed = simplexml_load_file($url, 'SimpleXMLElement', LIBXML_NOCDATA); $final = array(); foreach($feed->channel->item as $post) { $final[] = array( 'id' => (string)$post->guid, 'title' => (string)$post->title, 'date' => date('d.m.Y', strtotime((string)$post->pubDate)), 'text' => (string)$post->children('http://purl.org/rss/1.0/modules/content/')->encoded, 'link' => (string)$post->link ); } echo json_encode($final);
Ich arbeite gerade an einer Multiplattform App mit dem Sencha Touch 2 Framework, welche eine NestedList enthält, um Daten aufzulisten.
Klickt man auf ein Item der NestedList, so wird das Event “nestedListLeafItemTap” aufgerufen, in dem ich dynamisch Inhalt in die DetailCard dieser List lade. Wenn der Inhalt nun z.B. 2 Bildschirmseiten lang ist, der Benutzer ganz nach unten scrollt, zurück geht und den nächsten Eintrag antippt, öffnet sich die DetailCard wieder ganz unten an alter Position. Nun müsste man wieder hochscrollen, was Usability Technisch gesehen Schmarren ist.
Um automatisch nach dem befüllen der Daten nach oben zu scrollen, holen wir uns in der “nestedListLeafItemTap” Methode die DetailCard und greifen auf das “Scrollable” zu. Das interne Handling für Scrollbare Elemente und scrollen darüber ganz nach oben. Natürlich so damit es dem User nicht ins Auge fällt:
var detailCardScroller = nestedlist.getDetailCard().getScrollable().getScroller(); detailCardScroller.refresh(); detailCardScroller.scrollToTop(false);