Moin,
ich will von einem Rest Api Endpunkt (selber geschriebenes Plugin) auf Shopware()->Modules()->Admin() zugreifen. Leider erhalte ich dabei den Fehler:
{"success":false,"message":"Errormesage: You have requested a non-existent service \"shop\". Did you mean one of these: \"shopware_elastic_search.orm_backlog_subscriber\", \"shopware.plugin.config_reader\", \"shopware.plugin.cached_config_reader\", \"shopware.upload_max_size_validator\", \"shopware.generic_controller_listener\", \"shopware.escaper\"?"}
Hier mein vereinfachter Quellcode:
class Shopware_Controllers_Api_Endpunkt extends Shopware_Controllers_Api_Rest
{
public function init()
{
Shopware()->Modules()->Admin();
}
}
Nun meine Fragen:
Ist es möglich von einem Rest Api Endpunkt auf Shopware()->Modules()->Admin() zu zugreifen? Wenn ja, wie?
Ich möchte mittels Shopware()->Modules()->Admin() Kunden-Logins durchführen. Ist die Klasse für die Kundenlogins gedacht oder gibt es andere Möglichkeiten?
Ich bin noch Einsteiger in der Plugin-Entwicklung und würde mich über eure Tipps und Hilfe freuen!
Das liegt daran, dass die API nicht weiß zu welchem Shop der Aufruf gehört. Das gleiche Problem gibt es z.B. auch bei der Commandline oder bei Backendplugins.
Du hattest recht. Ich musste erst den Shop zuweisen, danach konnte ich Shopware()->Modules()->Admin() benutzen.
Hier einmal die Lösung des Problems:
class Shopware_Controllers_Api_Endpunkt extends Shopware_Controllers_Api_Rest
{
protected $admin;
protected $shop;
/**
* Called on startup of this controller
*/
public function init()
{
$repository = Shopware()->Models()->getRepository('Shopware\Models\Shop\Shop');
$this->shop = $repository->getActiveDefault();
$this->shop->registerResources(Shopware()->Bootstrap());
$this->admin = Shopware()->Modules()->Admin();
}
}
Ich kann nun die Klasse Admin verwenden und werde versuchen den Kunden-Login durchzuführen.
Vielen Dank nochmals!