Team-online-stage / Online-stage-platform

Plaats voor opdrachten
0 stars 0 forks source link

Als developer wil een begrijpen hoe ik informatie uit API’s kan ophalen via de commonground service #35

Open rubenvdlinde opened 4 years ago

rubenvdlinde commented 4 years ago

Binnen common ground architectuur wordt date/gegevens niet opgeslagen in een applicatie maar in externe gegevensbronnen. Dat is eigenlijk een mooi manier om te vertellen dat we elke database van een API hebben voorzien en in een eigen component gestopt. Dat roept natuurlijk de vraag op hoe we met API’s interacteren.

In het geval van de proto applicatie is dat makkelijk, we kunnen daar gebruik maken van de common ground service. Deze kent zowel een controller als template variant, in het geval van de controller moeten we de service eerst inladen door hem als dependency te declaren. Dat doen we met: use Conduction\CommonGroundBundle\Service\CommonGroundService;

Vervolgens kunnen we hem via dependency injection aanmelden voor een controller service (dependencyInjection wil zeggen dat we de variabele voor invullen). Dat doen we op de volgende manier: public function indexAction( CommonGroundService $commonGroundService).

Nu kunnen we in de code van de controller de service direct aanroepen, vanuit de $commonGroundService variabelen. Een gedetailleerd overzicht van de commonground service kan je terug vinden op https://github.com/ConductionNL/CommonGroundBundle/blob/master/Service/CommonGroundService.php maar voor nu richten we ons op de volgende fucnties getResource() Haalt een enkel object op getResourceList() Haalt een lijst van objecten op

De commonground service zelf organiseerde het maken van een verbinding, dus het enige wat we hoeven te vertellen welk object uit welk component moet worden opgehaald. Dat doen we aan de hand van componen codes en objecten namen en eventueel een id. Als we bijvoorbeeld een lijst van alle templates willen ophalen uit het wrc component (web resources catalogus) kunnen we dat doen door te zeggen $commonGroundService->getResourceList([‘component’=>’wrc’,’type’=>’templates’]); We krijgen dan een array terug van alle templates uit de component.

Deze kunnen we vervolgens in twig weergeven door hier heen te itereren (via https://twig.symfony.com/doc/2.x/tags/for.html).

Opdracht Haal in je net gebouwde controller alle templates op en print de namen hiervan op de index pagina. Voor een voorbeeld van het ophalen van gegevens kan je kijken naar de education controller en voor het weergeven van objecten naar /api/templates/education/programs waar het linker menu bestaat uit een lijst van dynamisch gegenereerde namen.

MarkBout commented 4 years ago

Hierbij de repository link: https://github.com/MarkBout/Proto-application-NLDesign