Controller-Action über CLI-Tools aufrufen?

[quote=„Aquatuning GmbH“][quote=„hbee“]Jetzt müsste ich noch mal testen ob mir dann auch die Api-Resourcen zur Verfügung stehen.[/quote] An die API kommst du entweder über die Shopware singletons oder über dependency injections. Viele Grüße[/quote] Ich habe jetzt die jetzt einfach in meiner Komponente instanziiert und kann dann in dem Command drauf zugreifen: Components/Test.php [code]<?php /**

  • User: hbee
  • Date: 11.01.15
  • Time: 13:30
    */

namespace Shopware\TestPlugin;

class Test {

public $shopwareCategoryResource;

public function __construct(){
    $this->shopwareCategoryResource = $this-\>getShopwareCategoryResource(); } public function test(){ return "test from component"; } public function getShopwareCategoryResource(){ return \Shopware\Components\Api\Manager::getResource('Category'); } } [/code] [b] Commands/TestCommand.php[/b] [code] [...] /\*\* \* {@inheritdoc} \*/ protected function execute(InputInterface $input, OutputInterface $output) { //$test = $input-\>getArgument('test'); $obj = new \Shopware\TestPlugin\Test(); $category = $obj-\>shopwareCategoryResource; $list = $category-\>getList(); $output-\>writeln('<info>'.sprintf("Got test: %s.", var_dump($list)).'</info>'); } [...] [/code] Das funktioniert soweit erst mal gut. Spricht etwas dagegen das so zu machen oder gibt es einen besseren Weg? Vielen Dank erst mal für die Unterstützung.

Prinzipiell sollte das funktionieren. Aber du solltest getter Methoden verwenden - zb getCategoryRescource() anstatt direkt auf die Attribute zuzugreifen. Dann brauchst du die Ressource auch erst Erzeugen, wenn sie benötigt wird, anstatt im constructor. Viele Grüße

[quote=„Aquatuning GmbH“]Aber du solltest getter Methoden verwenden - zb getCategoryRescource() anstatt direkt auf die Attribute zuzugreifen. Dann brauchst du die Ressource auch erst Erzeugen, wenn sie benötigt wird, anstatt im constructor. [/quote] Vielen Dank, so werde ich es machen.

ich habe jetzt doch noch ein Problem. Im Grunde funktioniert jetzt alles so. Wenn ich aber auf der Konsole das Kommando aufrufen will, bekomme ich immer noch ein [quote]“There are no commands defined in the “TestPlugin” namespace.”[/quote] Wenn ich dann zb.: sw:plugin:list aufrufe bekomme ich ein [quote] The directory “/var/www/shopware/cache/doctrine/proxies/201409241139” is not writable.[/quote] Ändere ich nun die Schreibrechte auf 777 kann ich beide Kommandos aufrufen. Wenn ich das Plugin erneut installiere geht das Spiel von vorne los und er findet mein Kommando nicht. Rufe ich das sw:plugin:list wie folgt auf, lässt es sich aufrufen und ich bekomme die Pluginliste ausgegeben. sudo -u www-data bin/console sw:plugin:list Das funktioniert mit meinem eigenen Kommando nicht. Woran kann das jetzt noch liegen? Hat jemand noch einen Tipp?