# Skript lokale Api verwenden

**URL:** <https://forum.shopware.com/t/skript-lokale-api-verwenden/22720>\
**Category:** Shopware 3.5\
**Tags:** programming\
**Created:** [1. Oktober 2014 um 23:35 UTC](https://forum.shopware.com/t/skript-lokale-api-verwenden/22720 "2014-10-01T23:35:59Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![ich](https://avatars.discourse-cdn.com/v4/letter/i/5f9b8f/32.png) [@ich](https://forum.shopware.com/u/ich)\
**Post date:** [1. Oktober 2014 um 23:35 UTC](https://forum.shopware.com/t/skript-lokale-api-verwenden/22720/1 "2014-10-01T23:35:59Z")

</div>

Hallo alle zusammen, ich möchte gerne lokal auf die API zugreifen. Dafür orientiere ich mich an: [http://wiki.shopware.de/Shopware-4-Loka … l\_992.html](http://wiki.shopware.de/Shopware-4-Lokaler-Zugriff-auf-die-API%5C_detail%5C_992.html) Ich habe dieses Skript erstellt. Sobald ich $client = new Shopware\_Controllers\_Frontend\_ApiTest(); ausführe, wird print “abc”; nicht mehr angezeigt. Wenn ich es nicht ausführe (auskommentiere), wird abc angezeigt. Obwohl ich auf benuterdefinierte Fehlerbehandlung umgestellt habe, kommt keine Fehlermeldung. Stellt Shopware auf eine eigene Fehlerbehandlung um? Wenn ich nämlich extends Enlight\_Controller\_Action auskommentiere, dann kommt abc wieder. Wo liegt mein Fehler? Ist es vielleicht beabsichtigt? //edit: Ich habe herausgefunden, dass der IE einen 500-Serverfehler auswirft. Somit muss ich irgendetwas falsch konfiguriert haben. Weiß jemand, was? Wie gesagt, wenn ich extends Enlight\_Controller\_Action auskommentiere, kommt der Fehler nicht. [code]\<?php // auf die benutzerdefinierte Fehlerbehandlung umstellen  
$alter\_error\_handler = set\_error\_handler(“myErrorHandler”);

$client = new Shopware\_Controllers\_Frontend\_ApiTest();  
//$article = $client-\>loadArticleAction(); print “abc”; // Fehlerbehandlungsfunktion function myErrorHandler($fehlercode, $fehlertext, $fehlerdatei, $fehlerzeile) { switch ($fehlercode) { case E\_USER\_ERROR: echo " **Mein FEHLER** [$fehlercode] $fehlertext  
\n"; echo " Fataler Fehler in Zeile $fehlerzeile in der Datei $fehlerdatei"; echo “, PHP " . PHP\_VERSION . " (” . PHP\_OS . “)  
\n”; echo “Abbruch…  
\n”; exit(1); break; case E\_USER\_WARNING: echo " **Meine WARNUNG** [$fehlercode] $fehlertext  
\n"; break; case E\_USER\_NOTICE: echo " **Mein HINWEIS** [$fehlercode] $fehlertext  
\n"; break; default: echo “Unbekannter Fehlertyp: [$fehlercode] $fehlertext  
\n”; break; } /\* Damit die PHP-interne Fehlerbehandlung nicht ausgeführt wird \*/ return true; } class Shopware\_Controllers\_Frontend\_ApiTest extends Enlight\_Controller\_Action { protected $articleResource; public function init() { $this-\>Front()-\>Plugins()-\>ViewRenderer()-\>setNoRender(); $this-\>initArticleResource(); } public function initArticleResource() { $this-\>articleResource = \Shopware\Components\Api\Manager::getResource(‘Article’); } public function loadArticleAction() { $article = $this-\>articleResource-\>getOne(3); } public function loadArticlesAction() { $articles = $this-\>articleResource-\>getList(); } public function loadArticlesWithFilterAction() { $filters = array( ‘name’ =\> ‘Schmuckbaum’ ); $articles = $this-\>articleResource-\>getList(0, 25, $filters); } public function loadArticlesWithOrderByAction() { $orderBy = array(array( ‘property’ =\> ‘added’, ‘direction’ =\> ‘DESC’ )); $articles = $this-\>articleResource-\>getList(0, 25, array(), $orderBy); } public function createAction() { $params = array( ‘name’ =\> ‘Neuer Artikel’, ‘taxId’ =\> 1, ‘mainDetail’ =\> array( ‘number’ =\> ‘SW123456’ ) ); $article = $this-\>articleResource-\>create($params); } public function updateAction() { $params = array( ‘name’ =\> ‘Neuer Artikelname’ ); $article = $this-\>articleResource-\>update(193, $params); } public function deleteAction() { $article = $this-\>articleResource-\>delete(193); } } [/code]

---

<div class="post-metadata">

**Author:** ![kuerbis](https://avatars.discourse-cdn.com/v4/letter/k/0ea827/32.png) [@kuerbis](https://forum.shopware.com/u/kuerbis)\
**Post date:** [6. Oktober 2014 um 12:17 UTC](https://forum.shopware.com/t/skript-lokale-api-verwenden/22720/2 "2014-10-06T12:17:16Z")

</div>

Ich würde mal annehmen, dass in Deinem Skript die “Enlight\_Controller\_Action” nicht bekannt ist. Wenn Du das von Dir gepostet Skript einfach ausführst, fehlt der Autoloader von Shopware. Oder wie rufst Du es auf?

---

<div class="post-metadata">

**Author:** ![ich](https://avatars.discourse-cdn.com/v4/letter/i/5f9b8f/32.png) [@ich](https://forum.shopware.com/u/ich)\
**Post date:** [6. Oktober 2014 um 13:24 UTC](https://forum.shopware.com/t/skript-lokale-api-verwenden/22720/3 "2014-10-06T13:24:40Z")

</div>

Ich rufe es so auf, wie ich gepostet habe. Ist es notwendig, dass ich noch irgendwelche Klassen einbinde/inkludiere? Wie kann ich meinem Skript mitteilen, wo es die „Enlight\_Controller\_Action“-Klasse findet?

---

<div class="post-metadata">

**Author:** ![TeichDatensysteme](https://avatars.discourse-cdn.com/v4/letter/t/43a26b/32.png) [@TeichDatensysteme](https://forum.shopware.com/u/TeichDatensysteme)\
**Post date:** [6. Oktober 2014 um 13:48 UTC](https://forum.shopware.com/t/skript-lokale-api-verwenden/22720/4 "2014-10-06T13:48:12Z")

</div>

Das ist ja völlig aus dem Kontext gegriffen. Kein Plugin, keine Registrierung irgendwelcher autoloader/Events/Controllern, keine Hauptinstanz des Shops usw … Hier gibt es Hilfe: [Shopware Plugin](http://wiki.shopware.de/Shopware-4-Grundlagen-der-Plugin-Entwicklung%5C_detail%5C_971.html) Wenn Du die lokale API verwenden willst, würde ich mit dem oben genannten Grundgerüst anfangen. Schöne Grüße, Niklas

---

<div class="post-metadata">

**Author:** ![ich](https://avatars.discourse-cdn.com/v4/letter/i/5f9b8f/32.png) [@ich](https://forum.shopware.com/u/ich)\
**Post date:** [6. Oktober 2014 um 13:52 UTC](https://forum.shopware.com/t/skript-lokale-api-verwenden/22720/5 "2014-10-06T13:52:58Z")

</div>

Ich dachte, ich könnte einfach so ein Testskript erstellen. Geht das nur als Plugin?

---

<div class="post-metadata">

**Author:** ![TeichDatensysteme](https://avatars.discourse-cdn.com/v4/letter/t/43a26b/32.png) [@TeichDatensysteme](https://forum.shopware.com/u/TeichDatensysteme)\
**Post date:** [6. Oktober 2014 um 15:40 UTC](https://forum.shopware.com/t/skript-lokale-api-verwenden/22720/6 "2014-10-06T15:40:30Z")

</div>

Du erbst von Enlight\_Controller\_Action und spricht Shopware Namespaces an - woher sollen die denn kommen? Du definierst in deinem Script doch nichts dergleichen, dann kann das auch definitiv nicht funktionieren. Deswegen: Spiel dein Script bzw. starte es als Plugin ein, sonst hast Du nicht die Möglichkeiten, die Du da gerade versuchst. Und, anhand verschiedener Kriterien (Misch-Masch von OOP und Standard functions, Klassen-Definition und externen Code innerhalb von einer Datei) sehe ich, dass Du wohl mit verschiedenen und grundlegenden Praktiken nicht vertraut bist: Lies und spiel lieber die Beispiele aus dem Wiki durch, sonst wird es schwer bis unmöglich. Schöne Grüße und viel Erfolg, Niklas

---

<div class="post-metadata">

**Author:** ![ich](https://avatars.discourse-cdn.com/v4/letter/i/5f9b8f/32.png) [@ich](https://forum.shopware.com/u/ich)\
**Post date:** [6. Oktober 2014 um 16:21 UTC](https://forum.shopware.com/t/skript-lokale-api-verwenden/22720/7 "2014-10-06T16:21:41Z")

</div>

OK, danke! Ich dachte das umgehen zu können. Ein Plugin habe ich auch schon erstellt und kann das dann über diesen Weg regeln. Mein Ziel ist eigentlich die lokale API für ein paar Situationen verwenden zu können, weil ich den Remote-Zugriff auf die API noch nicht hinbekommen habe :happy:
