HMVC vraag

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Embedded Software Developer Games

Functie omschrijving Heb jij affiniteit met hardware en wil jij kleuren binnen een Qt framework? Spreek jij de talen C en of C ++? Dan ben ik wellicht opzoek naar jou! Voor een super gave opdrachtgever in omgeving Delft is er namelijk plek voor een nieuwe kracht! Dit bedrijf is gespecialiseerd in het ontwerpen van software voor een unieke game industrie. Wil jij betrokken worden bij een proces dat loopt van ontwikkeling tot installatie? Waarbij je bezig zult zijn met perfecte systemen die geleverd worden aan binnen en buitenland? Je zult in een team, samen met vier ontwikkelaars, de mooiste

Bekijk vacature »

Medior Java developer

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Medior/senior Back-end developer wanted!

Functie Because of the growth within the company, we are looking for reinforcement in the devlopmenttean. As a back-end developer you build the company software that helps us with the primary processes. A fun (internal) project in which you continuously develop the software! You will work in a small team, we have daily stand-ups and a scrum session every fortnight, led by our Scrum Master. During these sessions, you get the opportunity to present your ideas and discuss them with your fellow developers and the Product Owner. Within the development teams, we use Trello, Gitlab, Jiira, Confluence and Boockstack. They

Bekijk vacature »

Traineeship ICT regio Amsterdam/Utrecht

Wat ga je doen? Het traineeship begint met een fulltime maand cursussen en praktijkdagen, waarin je de basis van het IT-vak leert op de Shared Servicedesk (SSD). Daarnaast ga je meteen aan de slag voor je eerste certificering! (ITILv4). Je start in een groep met 4 tot 10 deelnemers, waarmee jij gedurende die maand optrekt en je kennis kunt delen. Na het voltooien van de eerste maand ga je direct voor een langere periode aan de slag bij één van onze klanten of blijf je intern bij ons op de Shared Servicedesk. Je bent het eerste aanspreekpunt van de eindgebruikers

Bekijk vacature »

Software Ontwikkelaar PHP

Functie omschrijving Software Ontwikkelaar PHP gezocht! Wij zijn op zoek naar een ervaren PHP Software Ontwikkelaar om het team van onze opdrachtgever te versterken! De ideale kandidaat zal fungeren als verlengstuk van klanten en complexe technische vraagstukken met enthousiasme benaderen. Naast het werken met de nieuwste technologieën, ben je in staat om aan meerdere projecten tegelijkertijd te werken. Als je deze uitdaging aangaat, werk je nauw samen met front-end developers en draag je bij aan het realiseren van grote veranderingen bij klanten. Het bedrijf zoekt iemand die zichzelf graag uitdaagt en altijd streeft naar het leveren van de beste resultaten.

Bekijk vacature »

Back-end programmeur

Functieomschrijving Heb jij kort geleden je MBO of HBO ICT in ontvangst mogen nemen? Of ben je klaar voor een nieuw hoofdstuk in jouw carrière? Voor een uitdagende werkgever in de regio van Tilburg zijn wij op zoek naar een ambitieuze back-end programmeur met affiniteit met MS Acess. Samen met een enthousiast team ben je verantwoordelijk voor het bouwen van maatwerk software voor hun klanten. Je hebt kennis of ervaring van SQL, Maar affiniteit met MS Acess is nog belangrijker. Je bent sociaal naar klanten en flexibel ingesteld. Je denkt altijd in kansen en gaat graag de uitdaging aan. Verder

Bekijk vacature »

Lead developer

Functie Als lead developer wordt jij verantwoordelijk voor een van onze development teams. Samen met de Software Architect bewaak jij de kwaliteit en uitvoering van onze complexe vraagstukken. Daarnaast ben jij verantwoordelijk voor het inschatten, designen en ontwikkelen van middelgrote tot grote veranderingen in de software. Ook coördineer jij het proces rondom complexe technische vraagstukken. Verder bestaat jouw takenpakket uit het volgende: – Het aansturen van jouw development team; – Het begeleiden van Junior Software Engineers; – Het maken van technische analyses m.b.t. nieuwe aanvragen en het tijdsbestek inschatten voor de uitvoering hiervan; – Het uitvoeren van de ontwikkeling van

Bekijk vacature »

Junior .NET developer

Functie Als junior .NET Core developer wordt jij onderdeel van ons team met drie breed ontwikkelde software engineers en een flexibele schil met zes ervaren freelancers. Jij gaat mee in de visie van onze organisatie om als IoT partner in deze branche specifieke markt “het” platform te blijven innoveren en deze ook steeds slimmer te maken. Wij hopen dan ook zeker dit in de toekomst te kunnen realiseren met bijvoorbeeld Artificial Intelligence. De architectuur van ons platform is opgemaakt uit een deel eigen protocol, een interface laag en een laag welke de protocollen van derde partijen vertaald naar het eigen

Bekijk vacature »

Senior java ontwikkelaar integratie

Functieomschrijving Voor de gemeente Rotterdam zijn wij op zoek naar een senior java ontwikkelaar integratie. Taken Binnen een zelfsturend Scrumteam voer je geheel zelfstanding je opdrachten uit en levert het eindresultaat op aan het Integratieteam. Jij voelt je net als alle teamleden verantwoordelijk voor alle aspecten, vanaf de vraag tot en met de oplevering in productie. Je bent kritisch, je helpt de klant om zijn wensen helder te krijgen, je schrijft zelfstandig clean code die van hoge kwaliteit is, met bijbehorende unit- en integratietesten, je ondersteunt zo nodig bij deployments naar productie. Het Integratieteam bouwt componenten (Endpoints) op de ESB.

Bekijk vacature »

C# .NET developer voor innovatieve applicaties gez

Bedrijfsomschrijving Deze werkgever houdt zich al ruim 20 jaar bezig met het ontwikkelen van innovatieve software en dat willen ze graag nog lang doorzetten. En dat merk je ook als je als .NET developer hier aan de slag gaat. De applicaties worden continu doorontwikkeld met altijd als uitgangspunt dat zowel de kwaliteit als het gebruikersgemak van hoog niveau is. Het bedrijf telt inmiddels ruim 25 medewerkers waarvan meer dan de helft op de development afdeling werken. Meer weten over deze werkgever? Mail naar [email protected] of bel 0657578548 Functieomschrijving Je komt te werken in een Scrum team met andere .NET developers

Bekijk vacature »

Developer (One Data)

Do you have experience with managing IT Teams in a service delivery organization? Are you keen to bring the team and our platform to a higher level? Then Nutreco has a very interesting role for you! As a One Data developer you are responsible for the management, running and functional use of our integration landscape and processes within Nutreco. Nutreco is using at this time BizTalk 2016, and Apigee for its API management, to be replaced by Azure Integration Services as of 2023. You will be part of a virtual teams of 11 people (own and outsourced) working in an

Bekijk vacature »

Robot Programmeur

In het kort Drie redenen waarom deze vacature uniek is! Programmeren van zelflerende robots Werken op kantoor en testen in de bedrijfshal Je krijgt verantwoordelijkheid, vrijheid en je mag werken naar eigen inzicht De organisatie Hier ga je aan de slag Een bedrijf dat innovatieve robottoepassingen ontwerpt en bouwt voor onder andere de staal industrie, energie- bouw- en agrarische sector. De robots die vaak in combinatie met diverse randapparatuur geleverd worden vormen een totaaloplossing voor de klant. Dit zijn klanten over de hele wereld, van België en Duitsland tot China, India, maar ook in Nederland. Projecten waar momenteel aan wordt

Bekijk vacature »

.Net Ontwikkelaar

Dit ga je doen Het ontwerpen en ontwikkelen van software voor klanten; Het bijdragen van kennis en ervaring; Het integreren van van de software en afstemmen met klanten; Het functioneel testen van de ontwikkelde software. Hier ga je werken Voor onze relatie zijn wij momenteel op zoek naar een .Net Developer die wilt werken aan software die draait op machines wereldwijd. De organisatie produceert software voor applicaties die gebruikt worden in verschillende branches. De software wordt geleverd aan fabrikanten van verschillende robotica en machines. Als .Net ontwikkelaar ben je intern onderdeel van het team wat de applicatie omgevingen ontwikkeld en

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »
Wouter Van Marrum

Wouter Van Marrum

02/10/2014 17:25:36
Quote Anchor link
Hallo iedereen,

Ik vroeg met af of je in een HMVC omgeving een standaart hebt hoe je controllers aanroept.
Normaal gezien laadt je maar 1 controller alleen in hmvc kun je meerdere controllers laden, Maar wordt deze in de (bijvoorbeeld ) index controller geladen of in de view of model ?

Kwam er zelf niet helemaal uit zelfs met zoeken want daar lees ik meer over modules. ( dus bijv, twitter module, facebook, blog, rss ect. )
Gr wouter.
 
PHP hulp

PHP hulp

22/12/2024 04:04:14
 
Frank Nietbelangrijk

Frank Nietbelangrijk

02/10/2014 18:14:41
Quote Anchor link
De eerste controller wordt door de router aangeroepen. De overige via de view.

Bijv. je geeft een route op voor index.php/contact (of index.php?page=contact):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
main_contact:
    pattern:  /contact
    defaults: { _controller: MainBundle:Contact:index }


De controller:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php

class ContactController extends BaseController
{
    public function indexAction()
    {

        $data = array(
            'somedata' => 'somedata'
        );
    );


        return $this->render('MainBundle:Contact:index.html.twig', $data);
}

?>


De View:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Contact</title>
    </head>
    
    <body>
        <h1>Contact</h1>
        
        <!-- CONTACT INFO HERE -->

        <div class="sidebar-frame">
            {{ render(controller('MainBundle:Sidebar:index')) }}
        </div>
    </body>
</html>


Zoals je in de view hierboven kunt lezen wordt er weer een nieuwe controller aangeroepen om de sidebar weer te geven.

Voorbeeldje komt van Symfony maar dat is geen HMVC framework. Het principe is echter gelijk, het enigste verschil is dat Symfony geen Models kent. In plaats van een Model aan te roepen vanuit de controller wordt de data gewoon in de controller zelf verzameld. De exacte notatie van bijvoorbeeld de routes zijn per framework wel verschillend.
Gewijzigd op 02/10/2014 19:52:04 door Frank Nietbelangrijk
 
Wouter Van Marrum

Wouter Van Marrum

02/10/2014 20:40:24
Quote Anchor link
Hallo Frank,

Bedankt voor je antwoord.
In jouw voorbeeld gebruik je symfony en die gebruikt weer twig.
Nu gebruik ik alleen twig en heb ik geen toegang tot de render functie die symfony wel heeft.

Dit zou dus betekenen dat ik een twig extension moeten maken die de render functie nabootst.
Of in ieder geval een extension maken die een "controller/module" kan aanroepen en gebruik kan maken van alle functies die beschikbaar zijn.

Heb jij misschien een idee hoe ik dit het beste kan doen.
Met betrekking tot het aanroepen van de functie in van de "controller/module" ?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

02/10/2014 21:00:33
Quote Anchor link
Helaas Wouter,

In Symfony is dit natuurlijk standaard aanwezig. Google is je vriend :-)

Feitelijk hoef je alleen te weten hoe je een custom functie kan toevoegen in Twig.

http://twig.sensiolabs.org/doc/advanced.html#functions
 
Wouter Van Marrum

Wouter Van Marrum

02/10/2014 21:21:23
Quote Anchor link
Klopt frank,
Had dat topic al doorgelezen en heb al wel een idee hoe ik het wil implementeren.
Zal denk ik nog wel problemen tegen komen maar ik zal er eens een begin aan maken morgen.
 
Wouter J

Wouter J

02/10/2014 21:34:12
Quote Anchor link
Je kan ook even kijken hoe Symfony het heeft gedaan, maar dat is waarschijnlijk erg implementatie specifiek: https://github.com/symfony/TwigBridge/blob/master/Extension/HttpKernelExtension.php

(Btw, als Symfony doet wat jij wilt bereiken, waarom zou je dan nog zelf gaan knutselen?)
 
Wouter Van Marrum

Wouter Van Marrum

03/10/2014 00:30:57
Quote Anchor link
Bedankt wouter!
Had al gekeken hoe symfony dat deed maar keek op de verkeerde plek.
Zal hier morgen/vanmiddag na kijken.
Heb nu nachtdienst dus kan niet veel doen jammer genoeg
 
Ozzie PHP

Ozzie PHP

03/10/2014 01:10:32
Quote Anchor link
@Frank:

Als je die extra controllers in een view onderbrengt die bij de contactpagina hoort, dan krijg je dus telkens dezelfde pagina als je de contactpagina aanroept. Ik dacht eigenlijk dat het idee was dat zo'n pagina dynamisch (aan de hand van configuratie) wordt opgebouwd. Bijv. website A en B hebben allebei een contactpagina, maar op website B wordt een routebeschrijving getoond en op website A niet. Als je het in de view implementeert staat alles vast lijkt mij.
Gewijzigd op 03/10/2014 01:10:56 door Ozzie PHP
 
Wouter Van Marrum

Wouter Van Marrum

03/10/2014 01:34:54
Quote Anchor link
@ozzie, je gebruikt geen hele contact pagina als module. (als het goed Is)
Het zijn voornamelijk kleine elementen die je opnieuw kunt gebruiken op meerdere pagina's als dit nodig is.
Denk hier bijvoorbeeld aan een navigatie module die je in een master layout zet.
Of een fb like module die je in een pagina of blog view verwerkt.

Dit zijn maar voorbeelden natuurlijk.
En wat mij ook een voordeel lijkt is dat je een default style zou kunnen toepassen op de modules en eventueel kunt aanpassen.
Gewijzigd op 03/10/2014 04:33:32 door Wouter Van Marrum
 
Frank Nietbelangrijk

Frank Nietbelangrijk

03/10/2014 08:54:54
Quote Anchor link
Ozzie PHP op 03/10/2014 01:10:32:
@Frank:

Als je die extra controllers in een view onderbrengt die bij de contactpagina hoort, dan krijg je dus telkens dezelfde pagina als je de contactpagina aanroept. Ik dacht eigenlijk dat het idee was dat zo'n pagina dynamisch (aan de hand van configuratie) wordt opgebouwd. Bijv. website A en B hebben allebei een contactpagina, maar op website B wordt een routebeschrijving getoond en op website A niet. Als je het in de view implementeert staat alles vast lijkt mij.


Volgens mij is het idee om dubbele code te voorkomen.
Als we op alle pagina's dezelfde sidebar willen zien en we hebben vijf verschillende pagina's dan gaan we natuurlijk niet vijf keer dezelfde code herhalen. (logisch toch) Dat is naar mijn idee dé reden. Verder kan het juist zeer zeker wél dynamisch:

1. je hebt alle vrijheid in je controller(s).
2. in twig kun je heel simpel een if() - else() - endif gebruiken.
3. je kunt een foreach() e.d? in twig gebruiken
4. je zou zelfs nog een array met config waardes kunnen meegeven. (not done)


Dus ook het aanroepen van die controller kan in een if()
 
Ward van der Put
Moderator

Ward van der Put

03/10/2014 09:17:12
Quote Anchor link
Correct: Don't repeat yourself zou Artikel 1 in de Grondwet van OOP-land kunnen zijn.

Zodra je op het punt staat twee keer hetzelfde te gaan doen, moet je gaan refactoren. Bijvoorbeeld naar een service.

In dat opzicht is de naam HMVC misleidend, want het is geen MVC. Refactoren betekent namelijk niet automatisch dat je die dubbelingen in code dan in twee controllers gaat uitsplitsen.

De hiërarchie bij HMVC ontstaat niet doordat je MVC-modules binnen MVC-modules gebruikt, zoals een social media buttons-module binnen een footer-module binnen een webpagina-module. Dán krijg je inderdaad iets dat je niet wilt: een controller die vanuit een bovenliggende view in de hiërarchie wordt aangesproken. Je regelt dat op een hoger niveau, in de configuratie en in services van een kernel.
 
Ozzie PHP

Ozzie PHP

03/10/2014 10:37:55
Quote Anchor link
Ik snap niet of jullie nu hetzelfde bedoelen als wat ik bedoel, maar ik bedoel dit...

Frank zegt we hebben URL www.mijnsite.nl/contact en die roept de ContactController aan. Die ContactController roept vervolgens een view aan, en in die view worden weer andere (bijv. 5 stuks) controllers aangeroepen. Oké, prima... want dan gaan we niet wederom 5x die view opnieuw maken, maar we roepen gewoon die controller aan, en die zorgt voor de view. Correct?

Maar wat nu als 1 van die 5 controllers een MapController is die een plattegrond toont. Stel nu ik heb 2 verschillende websites, waarbij ik alleen bij de eerste een plattegrond wil tonen. Bovendien wil ik bij de 2e website een andere (dan die 5) controller erbij plaatsen. Hoe los je dat dan op?
 
Wouter J

Wouter J

03/10/2014 11:41:50
Quote Anchor link
>> Hoe los je dat dan op?

Website 1 en Website 2 hebben niet dezelfde backend. Misschien hebben ze wel overeenkomstige modules, maar daarvan wordt bijv. de view in de applicatie specifieke bestanden overschreven.

Overigens zijn we nu wel dit topic aan het kapen, niet?
 
Ozzie PHP

Ozzie PHP

03/10/2014 12:04:23
Quote Anchor link
>> Website 1 en Website 2 hebben niet dezelfde backend.

Dat weet je niet... ze kunnen toch op hetzelfde platform draaien en gebruik maken van dezelfde library?

>> ... maar daarvan wordt bijv. de view in de applicatie specifieke bestanden overschreven.

Dan ga je dus per (main)controller controleren of er een applicatie-specifieke view aanwezig is?

>> Overigens zijn we nu wel dit topic aan het kapen, niet?

Vind ik niet... ik probeer duidelijk te krijgen wat het doel is van de HMVC opzet. Klopt de opzet zoals deze door Frank wordt beschreven, of is misschien een iets andere aanpak wel wenselijk/handiger...?
 
Wouter J

Wouter J

03/10/2014 12:22:58
Quote Anchor link
>> Dat weet je niet... ze kunnen toch op hetzelfde platform draaien en gebruik maken van dezelfde library?

Beide websites hebben andere eisen, zoals je al beschreef. Dus kunnen ze niet beide op dezelfde applicatie runnen. Wat je in dit zorgt gevallen vaak hebt is een "standaard" die alle basis features bevat. Daar bovenop komt dan per website de maakwerk code. In dit geval zou een plattegrond onderdeel zijn van deze maatwerk code.

>> Dan ga je dus per (main)controller controleren of er een applicatie-specifieke view aanwezig is?

Nee, dit zit als het goed is al in je framework ingebouwd. In Symfony kan je bijv. een StandardAppBundle hebben die een template StandardAppBundle:Contact:index.html.twig heeft. In het geval van Website 1 moet deze worden uitgebreid met een plattegrond, dus overschrijven we die in de application directory door een bestand /app/Resources/views/StandardAppBndle/Contact/index.html.twig te maken. Deze voegt dan de plattegrond toe.
 
Wouter Van Marrum

Wouter Van Marrum

03/10/2014 15:29:57
Quote Anchor link
Bedankt voor de antwoorden !
Ik weet nu voldoende hoe ik het wil gebruiken.

Kom hier misschien nog eens later op terug,
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.