Magento ontwikkelaars tutorial les 5 / 14

Dit deel van de tutorial is nummer 5 in de reeks van 14. Wanneer je nog niet de voorafgaande lessen hebt gevolgd kan het lastig worden om verder te gaan met dit onderdeel van de tutorial. Ik raad je dan ook aan om eerst de voorafgaande lessen door te nemen. Klik hier om naar het overzicht van deze Magento tutorial te gaan. Dit deel van de tutorial behandelen we modelscollections en forms.Inmiddels hebben we al een werkende plugin staan, deze plugin heeft een controller, een block, een template en de mogelijkheid om te communiceren met de database. Nu gaan wij de functionaliteiten van de plugin uitbreiden om nog beter om te kunnen gaan met Magento.

Model, collecties en formulieren

Zoals je al in een eerder deel van deze tutorial hebt gezien is er gebruik gemaakt van de methode getModel(). Deze methode neemt een parameter wat het type van de gewenste model moet zijn. Om code die gebruikt wordt in deze les goed te kunnen uitvoeren kun je een deze het beste uitvoeren in een test bestand. Groot voordeel hiervan is dat je direct je code kunt testen zonder dat je de gehele webshop hoeft in te laden. Gebruik onderstaande code en plak deze in een bestand in de root van je project en navigeer vervolgens naar: http://mijnwebshop.nl/test.php. In de lessen maak ik gebruik van marcobax.php, dit bestand is ook terug te vinden in de zipfile die je kunt downloaden vanaf deze pagina.

Voeg vervolgens alle code waarmee je wilt testen onder de laatste regel toe. Om het model Test op te halen maak je gebruik van onderstaande code:

Met behulp van dit model is het mogelijk om contactgegevens op te slaan in de database. Je kunt deze vervolgens ook weer ophalen aan de hand van dit model. Om wat voorbeeld data te hebben in de tabel kun je deze zelf vullen of gebruik maken van onderstaande query:

Wanneer je bijvoorbeeld de contactgegevens wilt ophalen van het record met id 3 dan kun je dat bewerkstellen door middel van onderstaande code:

Wanneer je alle objecten van type marcobax/test wilt ophalen uit de database zul je de collection moeten ophalen. Een collection is een verzameling van objecten van hetzelfde type, bijvoorbeeld catalog/products. Haal de collection van de tabel op door middel van onderstaande code:

Met behulp van deze collection kunnen we een aantal operaties uitvoeren, zoals:

De volgende stap in dit voorbeeld is om onze module in een formulier te plaatsen om contactgegevens direct via de frontend van je webshop toe te kunnen voegen. Hierbij zullen we de records gaan sorteren op achternaam.

Sorteren van de gegevens

In een eerder deel (Magento modellen en database) van deze tutorial hebben we ervoor gezorgd dat de contactgegevens worden getoond met behulp van een Magento block. Open het bestand Mijnblok.php die je kunt vinden in: app/code/local/Marcobax/All/Block en pas deze aan zodat deze overeenkomt met onderstaande code:

Het enige wat je hoeft aan te passen is het eerste argument in de setOrder methode op een collection. Simpel, toch?

Een formulier toevoegen

Bewerk de template mijnblok.phtml te vinden in app/design/frontend/base/deafault/template/marcobax/All (zie deel 3 van deze tutorial) en bewerk deze zodat deze lijkt op onderstaand voorbeeld:

Bovenstaande template bevat nu een formulier en deze zal de ingevulde gegevens versturen naar de methode save van onze controller IndexController van onze module All. De gegenereerde URL wordt opgebouwd met behulp van de methode getUrl(). Deze methode is standaard beschikbaar in elke Magento installatie.

Om ervoor te zorgen dat de ingevoerde gegevens ook daadwerkelijk worden opgeslagen passen we de class IndexController aan van onze module Test welke te vinden is in: app/code/local/Marcobax/All/controllers/ en voeg onderstaande methode toe aan dit bestand:

Deze methode haalt gegevens op uit de post gegevens van het request object en defineert aan de hand van deze gegevens een drietal variabelen. Vervolgens wordt er een nieuw contact object aangemaakt, wat uiteindelijk een weergave van de tabel marcobax_test is. Dit is het einde van dit deel van de Magento developer tutorial.

Bronbestanden downloaden

Wil je alle bronbestanden van deze les in 1 zip bestand hebben om hiermee te experimenteren? Dat kan! Gebruik de onderstaande download link om de les bestanden naar je computer te downloaden.

[wpdm_file id=4]

 

Heb je vragen over de werking van de getoonde code, of heb je een error ontdekt? Laat het mij weten door gebruik te maken van het reactie formulier op deze pagina.

Ga terug naar het overzicht van deze tutorial.

1 antwoord

  1. Peter 3 augustus 2014 / 9:18 am

    Marco ik ben klaar voor de volgende lessen :D

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *