Quantcast
Channel: Programmierung - Shopware Community Forum
Viewing all 2871 articles
Browse latest View live

$this->redirect()

$
0
0

Guten Morgen alle Zusammen.

Ich rufe eine eigenen Controller inkl. eines Parameters. z.b /controller/index/id/2/

Vorher wird im preDispatch() noch überprüft, ob dieser User eingeloggt ist, ansonsten leite ich Ihn zum Login

$this->admin = Shopware()->Modules()->Admin();
        if (!$this->admin->sCheckUser()) {
          return $this->redirect(
              array(
                  'controller'=> 'account',
                  'action' => 'index',
                  'sTarget'=> 'controller',
                  'sTargetAction' => 'index'
                  )
          );
        }

Damit stelle ich sicher, dass dieser auch eingeloggt ist.

Wie aber schleife ich hier noch den Parameter /id/2 mit durch ? Diese Art der Umleitung geht ja nicht mit $this->forward.


Exception beim Anlegen eines Artikel über Plugin (Resources) - Problem mit Prices

$
0
0

Guten Morgen,

Ich entwickle eine Schnittstelle und lege dazu die Artikel über die API Funktionen von Shopware an:

$resource = \Shopware\Components\Api\Manager::getResource('article');

$articleData = array(
    'name' => $line[2],
    'taxId' => $taxId,
    'mainDetail' => array(
        'number' => $line[0],
        'inStock' => $line[15],
        'prices' => array(
            array(
                'customerGroupKey' =>'EK',
                'from' => 1,
                'to' => 'beliebig',
                'price' => $line[10],
                'basePrice' => 0,
                'percent' => 0
            )
        ),
    ),
    'categories' => array(
        array(
            'id' => 3
        )
    ),
    'supplier' => 'TBD',
    'description' => 'description',
    'descriptionLong' => 'descriptionLong',
    'active' => true,
);

$article = $resource->create($articleData);

Das alles funktioniert wunderbar, solange der "prices" node nicht enthalten ist. Sobald ich die "prices" wie oben zu sehen definieren, gibt es beim Ausführen nachfolgende Exception. Es handelt sich dabei nur um eine Notice aber ganz offensichtlich hat es hier ein Problem mit einem Array Index. Artikel und Preise werden dennoch angelegt.

PHP Notice:  Undefined index: key in /data/www/www.dev/engine/Library/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php on line 671
PHP Stack trace:
PHP   1. {main}() /data/www/www.dev/bin/console:0
PHP   2. Symfony\Component\Console\Application->run() /data/www/www.dev/bin/console:38
PHP   3. Shopware\Components\Console\Application->doRun() /data/www/www.dev/vendor/symfony/console/Application.php:123
PHP   4. Symfony\Component\Console\Application->doRun() /data/www/www.dev/engine/Shopware/Components/Console/Application.php:132
PHP   5. Symfony\Component\Console\Application->doRunCommand() /data/www/www.dev/vendor/symfony/console/Application.php:192
PHP   6. Symfony\Component\Console\Command\Command->run() /data/www/www.dev/vendor/symfony/console/Application.php:844
PHP   7. PhaIdxInterface\Commands\ImportCommand->execute() /data/www/www.dev/vendor/symfony/console/Command/Command.php:259
PHP   8. PhaIdxInterface\Lib\Articles->importArticles() /data/www/www.dev/custom/plugins/PhaIdxInterface/Commands/ImportCommand.php:79
PHP   9. Shopware\Components\Api\Resource\Article->create() /data/www/www.dev/custom/plugins/PhaIdxInterface/Lib/Articles.php:171
PHP  10. Shopware\Components\Api\Resource\Resource->flush() /data/www/www.dev/engine/Shopware/Components/Api/Resource/Article.php:541
PHP  11. Doctrine\ORM\EntityManager->flush() /data/www/www.dev/engine/Shopware/Components/Api/Resource/Resource.php:260
PHP  12. Doctrine\ORM\UnitOfWork->commit() /data/www/www.dev/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php:356
PHP  13. Doctrine\ORM\UnitOfWork->executeInserts() /data/www/www.dev/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php:378
PHP  14. Doctrine\ORM\Persisters\Entity\BasicEntityPersister->executeInserts() /data/www/www.dev/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php:1018
PHP  15. Doctrine\ORM\Persisters\Entity\BasicEntityPersister->prepareInsertData() /data/www/www.dev/engine/Library/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php:271
PHP  16. Doctrine\ORM\Persisters\Entity\BasicEntityPersister->prepareUpdateData() /data/www/www.dev/engine/Library/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php:722

Habe ich hier vielleicht einen Fehler im Aufbau des Arrays?

Bin Euch für jeden Tipp dankbar,

Liebe Grüße,
Synonymous

Artikeldetails im Listing bekommen

$
0
0

Guten Tag,

ich versuche mich gerade an der Plugin-Programmierung in Shopware. Ist eigentlich nur was relativ kleines, aber ich komme nicht weiter.

Ich möchte gerne alle verfügbaren Varianten eines Artikels als String in der Kategorieübersicht/im Listing anzeigen. Dazu habe ich mir ein kleines Plugin geschrieben, welches ins Listing eingreifen und mir die Varianten liefern soll, da diese standardmäßig nicht in der Artikel-Variable enthalten sind.

Leider erhalte ich aber nicht das gewünschte Ergebnis und ich denke es liegt daran, dass ich zum falschen Event subscribe.

ich habe in meiner install()-Funktion folgendes:

$this->subscribeEvent(
            'Enlight_Controller_Action_PostDispatchSecure_Frontend_Listing',
            'onPostDispatchListing'

Wenn ich nun in meiner onPostDispatchListing-Funktion versuche, das Ergebnis zu bekommen, bekomme ich gar nichts.

Mit $article = $args->getReturn(); funktioniert es nicht und mit $article = $args->get('subject'); bekomme ich folgende Fehlermeldung:

Fatal error: Cannot use object of type Shopware_Proxies_ShopwareControllersFrontendListingProxy as array in /engine/Shopware/Plugins/Local/Frontend/SpsListingVariants/Bootstrap.php on line 30
503 Service Unavailable

Ich denke mal, dass ich in diesem Event die Artikel gar nicht bekomme. Kann mir jemand von euch sagen, welches Event das Richtige ist, um die einzelnen Artikel zu bekommen und da die Varianten-Infos einzuspeisen?

Ich danke euch!

Replace Hook Protectet Eigenschaften von Proxys

$
0
0

Hallo zusammen,

ich bin dabei die Funktion Shopware_Components_Document::render zu erweitern bzw zu ersetzen, da ich bei der Belegerstellung einige Funktionalitäten von mPDF nutzen möchte die in der Standartversion nicht unterstützt werden.

Dabei registriere ich einen Replace Hook auf die Funktion.

$this->subscribeEvent(
   'Shopware_Components_Document::render::replace',
   'replaceDocumentRender'
);

Das klappt soweit auch, allerdings stehen kann ich nicht auf die protectet Variablen der Klasse zugreifen.

public function replaceDocumentRender(Enlight_Hook_HookArgs $arguments)
{
    $sub = $arguments->getSubject();
    if($sub->_typID != 5)
        $sub->executeParent("render", $sub->_render);
    else
        //doSomething

}

Gibt es eine Möglichkeit auf die Protectet Eigenschaften zuzugreifen?

Dazu habe ich im Forum diesen Beitrag https://forum.shopware.com/discussion/10778/geloest-replace-hook-wie-komme-ich-an-protected-variablen

gefunden.

 

Gruß Felix

Persistieren einer Entity führt zu Exception bei anschließender Artikelanlage via Resource

$
0
0

Schönen guten Morgen,

Ich bin über folgendes Problem gestolpert und finde dafür keine Erklärung bzw. Lösung:
Legt man über die Models eine neue Unit Entity an, persistiert sie und versucht man danach einen neuen Artikel über die Artikelresource anzulegen, führt das zu einer ORM Exception weil die ArticleID im ArticleDetail NULL ist. Persistiert man die Unit Entity NICHT, dann klappt die Anlage danach wunderbar - die Unit ist aber natürlich nicht persistiert.

Ich habe das ganze mal in einem kleinen Testbeispiel abgebildet (ist so getestet und zeigt den genannten Fehler):

$em = $this->getContainer()->get('models');

// Crate unit
$unit = new Shopware\Models\Article\Unit();
$unit->setUnit('m');
$unit->setName('Meter');

// @TODO Why does persist/flush of unit lead to an articleId NULL when article is crated via resource bellow???
$em->persist($unit);
$em->flush($unit);

// Build article data array
$data = array(
    'name' => 'Testartikel',
    'taxId' => 1,
    'description' => 'Description',
    'descriptionLong' => 'Description',
    'active' => true,
    'mainDetail' => array(
        'number' => '4711',
        'active' => true,
        'inStock' => 20,
        'unitId' => $unit->getId(),
        'ean' => '12345678',
    ),
);

$articleResource = Components\Api\Manager::getResource('article');
$articleResource->create($data);

Ohne persist() und flush() funktioniert alles wunderbar.

Hier die Exception im Detail:

[Shopware\Components\Api\Exception\OrmException]
  An exception occurred while executing 'INSERT INTO s_articles_details (articleID, unitID, ordernumber, suppliernumber, kind, additionaltext, active, instock, stockmin, weight, width, length, height,
  ean, purchaseprice, position, minpurchase, purchasesteps, maxpurchase, purchaseunit, referenceunit, packunit, shippingfree, releasedate, shippingtime) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?
  , ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' with params [null, 53, "4711", null, 1, null, 1, 20, null, null, null, null, null, "12345678", 0, 0, 1, null, null, null, null, null, 0, null, null]:
  SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'articleID' cannot be null   


Vielleicht gibt es hier den ein oder anderen Doctrine Profi der mir einen Tipp geben kann!?

Danke Euch vorweg,
LG
Synonymous

REST API Varianten löschen

$
0
0

Hallo,

ich habe folgendes Problem beim Synchronisieren der Artikle mit der API:

Wenn ich bei einem Variantenartikel eine Variante löschen möchte, gebe ich Sie beim aktualisieren des Artikels einfach nicht mehr mit, dann wird sie gelöscht. Das passt soweit.

Wenn der Artikel aber gar keine Varianten mehr haben soll, gebe ich jetzt 'variants'=>null mit, die Varianten bleiben dann aber bestehen.

Wie kann ich über die Artikel API alle Varianten löschen?

Beste Grüße!

ProductStreams - Neuheiten Sortierung ändern

$
0
0

Hallo zusammen,

wir haben eine Neuheiten-Stream erstellt und unserer Kategorie "Neuheiten" diesen Stream zugewiesen.

Jetzt haben wir eine Kategorie, in der automatisch alle Neuheiten angezeigt werden. Soweit klasse.

Wir kann ich das jetzt aber umdrehen, dass die neuesten Artikel immer oben / vorn stehen und die schon etwas älteren Neuheiten unten?

Aktuell setzt der Stream ganz heue Artikel immer am Ende dran... :-(

Meta Property ändern

$
0
0

Hallo Community,

ich habe das Problem, dass meine Shop Logo Bilder weiß sind, da mein Shop einen dunklen Hintergrund hat. Dies hat nun zur Folge das z.B. bei neuen Facebook verlinkungen zur Homepage das weiße Bild herangezogen wird.

Ich dachte mir ich ändere die Meta Property in der header.tpl einfach, mit einem Bild von mir.

Original steht dort drin: <meta property="og:image" content="{link file=$theme.desktopLogo fullPath}" diese wird laut facebook auch hernagezogen.

Wie kann ich diese zeile auf eine Datei im Ordner: _resources/images/header/Logo_Facebook.png , von mir ändern ?

Ich habe jegliche kombination ausprobiert ..// davor mal mit http:shopseite.de ... nicht funktioniert. Ich habe auch einen Textbaustein mit s name='IndexMetaFacebook'}{/s} angelegt. Und im Shop dan ein image (welches woanders funktioniert) zugewiesen.

Ich habe soeben den oiginal Link eingesetzt:

&lt;meta property="og:image" content="{'https://shopseite.de/media/image/59/b4/1b/Logo_ohne Hintergrund_weiß.png'}"/&gt;

selbst das funktioniert nicht, also muss es doch irgendein Code fehler sein !?

Ich bekomme immer wieder über den Object Debugger von Facebook die Fehlermeldung Bild konnte nicht geladen werden. Was mache ich falsch ?

Über einen rat wäre ich sehr dankbar

 

Grüße

Daniel

 


Zusätzliche Freitextfelder im Export

$
0
0

Hallo!

Ich habe das Problem, das mein Export zu Google Shopping zwar mit Attributen verwendet werden kann, leider jedoch von mir selbst angelegte Attribute nicht berücksichtigt. Wenn ich Attritbus 1-20 nehme, kann ich das Problemlos im Template ausgeben. Wenn ich Nummer zB. 37 nehme - bei mir <g:color>{$sArticle.attr37|escape}</g:color> für die Farbe, bleibt der Wert leer, obwohl er befüllt ist. 

Was kann ich tun?

 

Matthias

 

HTTP Post wirft 400er Fehler

$
0
0

Hi zusammen,

ich habe ein minimales Plugin erstellt, dass mir ermöglicht, eine URL http//shop.tld/frontend/test/index aufzurufen.

Per GET-Methode komme ich ohne Probleme an die URL, sende ich einen POST ab, erhalte ich einen 400er Error.

Könnt ihr mir sagen, was ich einstellen muss, damit auch POST-Abfragen in der Action ankommen?

Danke!

Bestimmte Variantenattribute im Listing anzeigen

$
0
0

Hallo zusammen,

wie kann ich bestimmte Freitextfelder im Listing zugänglich machen?

Der Hintergrund ist, dass Artikelvarianten Farben besitzen und ich diese in der Auflistung darstellen möchte. Ich habe bereits etwas Erfahrung mit Plugins, jedoch weiß ich in diesem Fall nicht genau wie ich anfangen soll.

VG

Dankesseite/Bestellabschluss

$
0
0

Moin werte Shopware Community,

weiss nicht ob das hier in die Kategorie gehört, aber ich fang einfach mal an. ;) Wir haben da folgendes Problemchen: Und zwar nutzen wir Active Campaign (AC) für unsere Automationen und wollen unsere Kunden für ein bestimmten Artikel "taggen". Wir hatten schon jemanden gefragt der uns in AC geholfen hatte, und diese Person sagte uns, wir können das mit dem Site-Tracking Code von AC auf der Dankesseite/Bestellabschluss von Shopware (SW) machen. Da für mich Shopware/HTML/PHP ziemlich Neuland ist (Tutorials und Foren wälzen/Backup machen/Ausprobieren), bin ich wohl noch nicht auf dem Stand das ich selbst drauf kommen könnte oder ich einfach nur zu blind für das Offensichtliche bin. SW und AC unterstützen sich leider nicht API technisch, sonst wäre das ja wohl ein Kinderspiel (Siehe Digistore24: https://doc.digistore24.com/technik/technische-anbindungen/externe-anbieter-anbinden/so-verbinden-sie-activecampaign-mit-digistore24/ ).
Hab zwar schon die "finish.tpl" Geschichte gefunden, aber ich bin mir da zu unsicher, ob dieses "tpl" nicht für alle meine Produkte zählt oder nur für das eine, wo ich die Kunden drauf "taggen" möchte. Mag auch nicht unseren Shop zerlegen. Ich hab auf unserer Shop Domain auch mehrere "finish.tpl" gefunden und wüsste auch nicht welche ich da nehmen sollte. Ich muss dazu sagen, ich habe den Shop nicht selber erstellt, also wirklich Neuland für mich. Hab mir zwar schon etliches angeschaut an Tutorials, aber die arbeiten ziemlich viel im HTML/PHP Bereich mit DreamWeaver und Smarty (brauchbar?). Hoffe ihr versteht meine umständliches Gebrabbel und könnt helfen. Danke im vorraus.

Man liest sich,

Sascha

Shopseiten Freitextfelder Frontend ausgeben?

$
0
0

Hallo,

wie kann ich die Freitextfelder der Shopseiten ausgeben?

{$sCustomPage.attr1} hat nicht funktioniert.

Grüße,

Alexander H.

Produktexporte Artikelfreitextfelder swag_attr 21-40

$
0
0

Hallo zusammen,

kann mir jemand sagen wie genau ich die Artikelfreitextfelder swag_attr 21-40 für die Produktexporte (Feeds) anspreche?

Für die attr1-20 funktioniert es mit:

{strip}
{$sArticle.attrX}{#S#}
{/strip}{#L#}

Aber wie komme ich an die Attribute swag_attr21-40? Folgendermaßen scheint es nicht zu klappen:

{strip}
{$sArticle.swag_attrX}{#S#}
{/strip}{#L#}

oder

{strip}
{$sArticle.swag.attrX}{#S#}
{/strip}{#L#}

oder

{strip}
{$sArticle.swagattrX}{#S#}
{/strip}{#L#}

Ich habe auch schon die verschiedensten Schreibweisen von Groß- und Kleinschreibung versucht. Es funktioniert einfach nicht.

Was mache ich nur falsch?

Vielleicht hat jemand einen Rat.

Danke & Gruß

Jens

SW 5.2 - REST API erweitern. Wie?

$
0
0

Hallo,

ich finde keinerlei Informationen, wie ich die API in SW 5.2 erweitern kann. Ich möchte gerne, dass beim Aufruf von api/articles im Ergebnis zusätzlich das Bild des Artikels ausgeliefert wird.

Ich habe nun ein Plugin namens "FpApi" erstellt und folgenden Inhalt darin:

 

namespace FpApi;

use Shopware\Components\Plugin;
use Doctrine\Common\Collections\ArrayCollection;

class FpApi extends Plugin {

    public static function getSubscribedEvents()
    {
        return [
            'Enlight_Controller_Action_PreDispatch_Api_Articles' =&gt; 'onFrontendPostDispatchApiArticles'
        ];
    }//function



}

 

 

Dann habe ich in meinem Plugin Ordner FpApi/Controllers/Api/ eine Datei abgelegt, die folgendes macht:

class Shopware_Controllers_Api_DepositArticles extends Shopware_Controllers_Api_Rest {
    
    protected $resource = null;

    public function init()
    {
        $this-&gt;resource = \Shopware\Components\Api\Manager::getResource('article');
    }

    /**
     * Get list of article
     *
     * GET /api/articles/
     */
    public function indexAction()
    {
        $limit  = $this-&gt;Request()-&gt;getParam('limit', 1000);
        $offset = $this-&gt;Request()-&gt;getParam('start', 0);
        $sort   = $this-&gt;Request()-&gt;getParam('sort', array());
        $filter = $this-&gt;Request()-&gt;getParam('filter', array());

        $result = $this-&gt;resource-&gt;getList($offset, $limit, $filter, $sort);

        $this-&gt;View()-&gt;assign($result);
        $this-&gt;View()-&gt;assign('success', true);
    }

}

 

Nun frage ich mich - benötige ich in meiner FpApi.php überhaupt getSubscribedEvents? Und wie mache ich es möglich das meine indexAction in meinem Controller beim Aufruf von api/articles angesprochen wird? Ich würde mir wünschen es gäbe hierzu ein offizielles Tutorial.

Danke!

 


SW 5.2 - Artikel Attribute an anderer Stelle anzeigen

Eigene Helferklasse einbinden

$
0
0

Ja das mit dem OOP ist manchmal so eine Sache :-)

Ich habe 2 Controller eingebunden und möchte bestimmte Funktionen in eine Helferklasse auslagern, damit ich von der Bootstrap und den jeweiligen Controllern zugreifen kann.

Diese habe ich in /Components abgelegt und den Namespace im Bootstrap registriert mit

$this-&gt;Application()-&gt;Loader()-&gt;registerNamespace(
            'Shopware\Plugins\MDPlugin',
            $this-&gt;Path() . 'Components/'
        );

 

Die Helferklasse sieht als Beispiel vereinfacht wiefolgt aus

namespace Shopware\Plugins\MDPlugin\Components;


class MeinPluginExt
{


    public function meineMethode()
    {
        ...............


    }
}

Wie ruf ich diese Methoden im Controller auf bzw. was habe ich noch vergessen ?

Möchten Sie benutzerdefinierte Variable in Backend E-Mail-Vorlage -> Bestellung hinzufügen

$
0
0

Hallo, Shopware Gurus.

Ich habe Probleme beim Erstellen von Plugins, die Variable Informationen auf E-Mail-Vorlage zu erweitern.

Bitte sehen Sie den Screenshot: http://www.screencast.com/t/s7NshMUs4c

Ich hooked Methode "getSingleMail" der Klasse "Shopware_Controllers_Backend_Mail", aber diese Methode rander anzeigen anstelle von return any value. Innerhalb dieser Methode gibt es eine Methode namens "getMail" und diese Methode zurück E-Mail-Daten, aber das ist auch als private Methode verwenden, und private Methode kann nicht hooked.

Ich arbeite an shopware Version 5.2.6.

Bitte helfen Sie mir in dieser Hinsicht, ich wäre Ihnen sehr dankbar.

Vielen Dank

Css Datei wird nicht abgerufen

$
0
0

Hallo Leute

Ich habe folgende Anleitung befolgt: 

http://ianlunn.co.uk/articles/hover-css-tutorial-introduction/#default-css-and-hacks

Die haben wirklich schöne Hover Effekte, evtl ist ja auch was für euch dabei. 

Nun habe ich das Problem das ich alles drin habe, aber die Effekte einfach nicht kommen wollen. 

Ich mache alles nach Plan und schaue auf jede Einzelheit, alles passt, aber nichts funktioniert. 

Muss ich irgendetwas noch machen was in diesem Tutorial nicht steht? 
 

Danke schonmal für eure Antworten!

Suhopware Commands

$
0
0

Hallo, 

ich möchte in meinem Console Command ein anderes Console Command am aufrufen. 
Habe in der Symfony Dokumentation folgendes gefunden: 
http://symfony.com/doc/current/console/command_in_controller.html


Smyfony Code:

$kernel = $this->get('kernel');
$application = new Application($kernel);
$application->setAutoExit(false);

$input = new ArrayInput(array(
   'command' => 'swiftmailer:spool:send',
   '--message-limit' => $messages,
));
// You can use NullOutput() if you don't need the output
$output = new BufferedOutput();
$application->run($input, $output);

Mein Code (Beispiel Command):

$command = new RebuildCategoryTreeCommand();
$command->run(new ArrayInput(array()), new BufferedOutput());

In der Console bekomme ich folgenden Fehler:

PHP Fatal error:  Call to a member function get() on a non-object in /.../vendor/symfony/console/Command/Command.php on line 615
Fatal error: Call to a member function get() on a non-object in /.../vendor/symfony/console/Command/Command.php on line 615
 

Der Fehler kommt zustande, weil das HelperSet nicht definiert ist. 

Hat jemand eine Idee?

Viewing all 2871 articles
Browse latest View live