Magento ontwikkelaars tutorial les 6 / 14

In deel 6 van 14 van deze Magento ontwikkelaars tutorial gaan we een plugin schrijven die gebruikt kan worden in de backoffice van Magento! Heb je de voorafgaande delen nog niet gelezen? Dan raad ik je sterk aan om daar mee te beginnen, heb je al ervaring met het aanmaken van een plugin in Magento dan kun je gewoon verder met dit deel van de tutorial.

Een korte Adminhtml introductie

Voordat we gaan beginnen met het bijwerken van onze plugin voor gebruik in de backend (backoffice) van Magento, is het allereerst raadzaam om te weten hoe de backoffice van Magento werkt. Zo zul je moeten weten dat een admin plugin exact hetzelfde in elkaar steekt als een frontend plugin. Je hebt namelijk ook een code deel, een template deel en de manier waarop mvc geimplementeerd is, is ook exact hetzelfde. Het grote verschil is dat de code die je gebruikt voor de backend van Magento zich in de map Adminhtml bevindt.

Het is dus zo dat bijvoorbeeld blocks zich bevinden in de volgende map: app/code/local/Marcobax/All/Block/Adminhtml/

De adminhtml controllers bevinden zich in de map: app/code/local/Marcobax/All/controllers/Adminhtml/

De models zijn hetzelfde voor adminhtml als voor de frontend, deze worden dus niet apart opgeslagen of hoeven apart aangemaakt te worden.

Templates voor de adminhtml plaats je in de map: app/design/adminhtml/default/default/. Hierbij is het wederom hetzelfde als voor de frontend.  Je hebt je layout.xml bestand en een template map waar je de layout bestanden en de daarbij horende templates opslaat.

Aanpassen van de plugin

We gaan verder met de codebase van de plugin die we in voorafgaande artikelen al hebben geschreven. Begin door het bestand config.xml te openen, deze vind je in de map: app/code/local/Marcobax/All/etc/

Voeg na de XML tag </frontend> en voor de tag <global> onderstaande code toe:

Uitleg over de XML wijzigingen:

Met behulp van deze XML tags maken we in Magento een nieuwe router aan die gebruikt gaat worden in de admin. Dit kun je zien door te kijken naar de waarde die in de <use> tag staat, in dit geval is dat admin. De routes die aangemaakt gaan worden zullen dus alleen maar werken in de backend van Magento. Om ook daadwerkelijk gebruik te kunnen maken van deze router is er een frontName aangemaakt (let op de camelcase, anders werkt het niet!) met de naam admintest.

Hier defineren we dat de layout die gebruikt moet gaan worden als bestandsnaam marcobax_all.xml moet hebben. Deze plaats je in de map: app/design/adminhtml/default/default/layout/. Voeg onderstaande code toe aan het bestand all.xml:

Wanneer je deze code hebt geplaatst merk je dat deze een frontend blok gebruikt voor de backend van je Magento module. Het is dus mogelijk om blocks en models uit de frontend te gebruiken in de backend (en vica versa). Het formulier dat al eerder gemaakt is zal nu ook te zien zijn in de Magento admin.

In dit deel van de XML wordt er een admin hoofdmenu aangemaakt met de titel Mijn plugins. Verdere instructies zijn makkelijk te lezen, namelijk:

sort_order: Sorteer positie van het menu item.
title: De titel in het menu
children: Een lijst met child nodes van het menu item, in dit voorbeeld voegen we er 1 toe, namelijk: adressbook. Deze heeft een titel en een action die verwijst naar adminhtml_index.

Controller aanmaken.

Als laatste ontbreekt er nog een controller, maak hiervoor een bestand aan in de map: app/code/local/Marcobax/All/controller/Adminhtml/ met als naam IndexController.php. Voeg vervoglens onderstaande php code toe aan dit bestand:

Uitleg over de werking van een controller is niet nodig, aangezien dit al in een voorafgaande les is behandeld. Klik hier om de les over controllers te lezen.

Formulier toevoegen.

Op dit moment hebben we een werkende plugin in de backend van Magento die toegankelijk is door middel van een menu. Op dit moment doet deze nog niet veel, behalve het afvangen van de routing en het renderen van de admin layout. Om tijd te besparen kopieer je de inhoud van het bestand:
app/design/frontend/base/default/marcobax/All/mijnblok.phtml

naar

app/design/adminhtml/default/default/template/marcobax/All/mijnblok.phtml.

Voeg in het formulier onderstaande input element toe:

Vanwege beveiligingsmaatregelen in Magento is deze verplicht.

Test het

Dat was het voor dit deel van de Magento ontwikkelaars tutorial! Klik hier om de vorige les te lezen over model, collecties en formulieren.

Download de bronbestanden van deze les.

Neem de code nog eens goed door door de bronbestanden te downloaden naar je computer. Dit kun je doen door gebruik te maken van de onderstaande download link:

[wpdm_file id=7]

Geef een reactie

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