Dieser Artikel zeigt, wie die Kernfunktionalität von Sylius mithilfe der Test-gesteuerten Entwicklung (TDD) erweitert wird, um das Inventarmanagement zu verbessern. Wir werden der Produktliste farblich codierte Low-Standard-Indikatoren hinzufügen. Dies wird eine Backend -Implementierung sein. Visuelle Tests mit Behat werden in einem zukünftigen Artikel behandelt. Angenommen, Sie haben eine funktionierende Sylius -Instanz.
Sylius bietet ein robustes Bestandsverwaltung, aber wir können es verbessern. Derzeit fehlen der Admin -Produktliste Aktieninformationen. Während die Variantendetails die Bestandsstufen und das Tracking zeigen, verbessert das Hinzufügen dieser zur Produktliste die Benutzerfreundlichkeit. Wir werden auch ein abgestuftes Warnsystem einführen (z. B. grün für reichlich Bestand, gelb für niedrige Bestände, rot für außer Lager).
Erweiterung ProductVariant
und Product
Modelle
Um Informationen zur Verfügbarkeit von Aktien hinzuzufügen, erweitern wir die Modelle von Sylius ProductVariant
und Product
.
1. Erstellen Sie ein Bundle
erstellen src/AppBundle/AppBundle.php
:
<?php namespace AppBundle; use Symfony\Component\HttpKernel\Bundle\Bundle; class AppBundle extends Bundle { }
Registrieren Sie es in app/AppKernel.php
:
<?php // ... public function registerBundles() { $bundles = [ // ... new AppBundle\AppBundle(), ]; }
update composer.json
's autoload
Abschnitt:
{ // ... "autoload": { "psr-4": { // ... "AppBundle\": "src/AppBundle" } } // ... }
run composer dump-autoload
.
2. SpecBDD -Tests
Wir werden PHPSPEC für die verhaltensgetriebene Entwicklung verwenden. In phpspec.yml.dist
hinzufügen:
AppBundle: { namespace: AppBundle\Entity, psr4_prefix: AppBundle\Entity, spec_path: src/AppBundle/Entity, src_path: src/AppBundle/Entity }
Löschen Sie den Cache: php bin/console cache:clear
.
Spezifikationen generieren mit:
php bin/phpspec desc AppBundle/Entity/ProductVariant php bin/phpspec desc AppBundle/Entity/Product
Schnittstellen erstellen: ProductInterface
und ProductVariantInterface
ihre Sylius -Gegenstücke erweitern. Erstellen Sie dann Product.php
und ProductVariant.php
die Sylius -Klassen und implementieren Sie die neuen Schnittstellen.
Fügen Sie eine $reorderLevel
-Meigenschaft zu ProductVariant.php
:
<?php // src/AppBundle/Entity/ProductVariant.php // ... class ProductVariant extends BaseProductVariant implements ProductVariantInterface { const REORDER_LEVEL = 5; private $reorderLevel; // ... }
3. Übergeordnete Sylius -Klassen
Sylius konfigurieren, um unsere erweiterten Klassen in app/config/config.yml
:
sylius_product: resources: product: classes: model: AppBundle\Entity\Product product_variant: classes: model: AppBundle\Entity\ProductVariant
4. Datenbankaktualisierung
Migrationen erzeugen und ausführen:
php bin/console doctrine:migrations:diff php bin/console doctrine:migrations:migrate
(oder bei Bedarf php bin/console doctrine:schema:update --force
verwenden). Erstellen Sie ProductVariant.orm.yml
, um die Spalte reorderLevel
in der Datenbank zu definieren. Erstellen Sie ein leeres Product.orm.yml
, da wir die Tabelle sylius_product
nicht ändern.
5. Weitere Spekbdd -Tests
PHPSPEC -Tests für ProductVariant
und Product
schreiben, wobei Methoden wie getReorderLevel()
, setReorderLevel()
, isReorderable()
, getOnHand()
und isTracked()
nach Bedarf implementiert werden, um sicherzustellen, dass alle Tests bestehen. Die Tests sollten verschiedene Szenarien abdecken, einschließlich unterschiedlicher Aktienniveaus und Nachbestellniveaus. Denken Sie daran, die Schnittstellen mit den erforderlichen Methoden zu aktualisieren.
6. Schlussfolgerung
Dieser TDD -Ansatz sorgt für einen robusten Code. Der nächste Artikel behandelt Behat -Tests zur visuellen Überprüfung.
(FAQS-Abschnitt für Kürze ausgelassen, da er weitgehend nicht mit dem Kerncode-Beispiel zu tun hat und die Antwortlänge erheblich erhöht. Die bereitgestellten FAQs sind gut geschrieben und können leicht eingeschlossen werden.)
Das obige ist der detaillierte Inhalt vonUpgrade von Sylius The TDD Way: Erforschung von PHPSPEC. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!