MVC view variabelen advies

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Full-stack Developer

As a Full-stack developer at KUBUS, you will develop the (web)applications and services of BIMcollab. You will work on both the front- and back-end. As a software company, KUBUS is in a unique position. We build our own products that are used by tens of thousands of users worldwide. Our company is just the right size: big enough to make a real impact in the market, but small enough that as an individual developer you can have an impact and really make a difference. Our development team consists of over 40 developers, testers, scrum masters and product owners, divided over

Bekijk vacature »

Medior/senior Python developer

Functie Bedrijven komen bij deze organisatie om technische vraagstukken op te lossen en hierin ook tot oplossingen te komen waar ze zelf misschien niet aan gedacht hadden. Jij gaat vanuit je ervaring dus niet alleen hands-on aan de slag met het ontwikkelen, maar zult ook zeker adviseren en proactief meedenken met de klant. Er zijn meerdere lange en/of korte projecten en het type klanten is heel uiteenlopend. Zo kun je terecht komen in een multidisciplinair scrumteam waarin je als Python developer meewerkt, of juist voor een kleiner (Greenfield) project aan de slag gaan waarin je veel breder bezig bent. Door

Bekijk vacature »

Front-end Developer (HTML/CSS, Angular/React/Vue,

Functie Je zal aan de slag gaan in een klein, hecht team met front-end development experts die de ambitie delen mooi werk te leveren. Samen met hen zal je werken aan het gebruiksvriendelijk en interactief maken van complexe webapplicaties, websites en mobile apps. Je levert klanten wat ze nodig hebben terwijl je actief aan jezelf blijft werken met de ondersteuning vanuit je werkplek. Talen als Javascript programmeer jij vloeiend en je hebt kennis van frameworks als React en Angular. Je zou je het liefst nog veel meer ontwikkelen in verschillende front-end talen. Deze kennis deel je graag met je collega’s,

Bekijk vacature »

No-Code Betty Blocks ontwikkelaar

Bedrijfsomschrijving Wil jij de bedrijfsprocessen van klanten revolutionair digitaliseren en optimaliseren zonder beperkt te worden door programmeertalen? Kom werken bij een snelgroeiende en professionele organisatie met een gezonde dosis humor en veel vrijheid om jezelf te ontwikkelen. Als No-Code Betty Blocks ontwikkelaar werk je vanuit ons kantoor in het hart van Nederland, je thuiswerkplek of op locatie bij de klant. We faciliteren de juiste trainingen en ondersteuning zodat je een echte Betty Blocks expert wordt. Naast het werk zijn er bij ons bijzondere events, zoals een jaarlijkse zeildag, een zomerse barbecue en een knus kerstdiner om de grillige maanden door

Bekijk vacature »

Magento developer

Functie E-commerce is een ‘’snelle’’ wereld. Om hierin continu voorop te blijven omarmen ze in een vroeg stadium nieuwe technieken. Een webshop is nooit af en kan altijd beter, sneller en efficiënter. Tegelijkertijd hebben ze vanaf hun oprichting altijd vastgehouden aan kwaliteit boven snelheid, en dit loont. Als back-end developer fungeer je als het verlengstuk van hun klanten. Technisch complexe zaken pak je met liefde op, en hierin werk je samen met o.a. front-end developers en designers. Klanten verwacht hierin kwaliteit van het hoogste niveau en een proactieve, meedenkende rol bij het maken van zowel technische als strategische keuzes. Ga

Bekijk vacature »

Als PHP developer bijdragen aan beter onderwijs?

Functie Momenteel zijn ze op zoek naar een PHP developer die mee gaat werken aan de (door)ontwikkeling van de producten en zo helpt aan de uitvoering van hun ontwikkelprojecten. Je komt te werken binnen hun development team bestaande uit 6 ontwikkelaars. Ze staan zowel open voor meer junior als medior/senior developers. Je kunt snel veel verantwoordelijkheid krijgen en doorgroeien binnen het bedrijf. Bovendien ben je betrokken bij het bepalen van de product roadmap en de inbreng van (nieuwe) technologieën. De applicaties waaraan je werk worden gebruikt op onderwijsinstellingen door heel Nederland. De tech-stack bestaat voornamelijk uit Laravel (PHP), Vue.js en

Bekijk vacature »

Back-end Developer Java

Dit ga je doen Het (door)ontwikkelen van een zelfgebouwde applicatie in Java, Spring Framework, SQL, HTML, CSS en Javascript; End-to-end beheer m.b.t. de applicatie en koppelen van applicaties binnen het landschap; Ontwikkelen van rapportages voor de interne organisatie; Ontwikkelen van aanvullende functionaliteiten m.b.t. de applicatie; Uitvoeren van testen en code reviews. Hier ga je werken Binnen deze organisatie kom je te werken op de afdeling die medische gegevens verzamelt vanuit het hele land. Denk hierbij aan vertrouwelijke persoonsgegevens. Het team verwerkt al deze data met als doel het waarborgen en verbeteren van de kwaliteit van de zorg in heel Nederland.

Bekijk vacature »

.NET developer

Klaar voor een nieuwe uitdaging? Welke technologieën gaan schuil achter de dagelijkse energievoorziening? Als senior .NET developer bij Kenter maak jij samen met je team het verschil, zowel voor de interne organisatie als voor eindklanten. Samen bouwen jullie aan innovatieve dienstverlening met behulp van de nieuwste technologieën en tools. Het is een functie met veel vrijheid, goede arbeidsvoorwaarden én je draagt jouw steentje bij aan de energietransitie. Klinkt dit als iets voor jou? Lees dan verder of solliciteer direct! Wat ga je doen als senior .NET developer? Als senior .NET developer bij Kenter (onderdeel van Alliander) ben je van onschatbare

Bekijk vacature »

Software Developer Java

Java/Kotlin Developer Ben jij een ervaren Java/Kotlin developer met een passie voor het automatiseren van bedrijfsprocessen? Wil je graag deelnemen aan uitdagende projecten bij aansprekende klanten? En ben je op zoek naar een professioneel, ambitieus en dynamisch bedrijf om je carrière verder te ontwikkelen? Kom dan ons team bij Ritense in Amsterdam versterken! Zo ziet de functie eruit: Als Java/Kotlin developer bij Ritense ben je verantwoordelijk voor de ontwikkeling en implementatie van applicaties die bedrijfsprocessen automatiseren, zodat onze klanten slimmer, efficiënter en klantgerichter kunnen werken. Als developer ben je in de lead en zorg je voor de correcte oplevering van

Bekijk vacature »

Cloud Developer

Cloud Developers opgelet! Bij Luminis zijn ze opzoek naar jou. Lees de vacature en solliciteer direct. Luminis is een software- en technologiebedrijf met meerdere vestigingen. Vanuit deze vestigingen werken 200 professionals aan technisch hoogwaardige oplossingen voor klanten zoals KLM, Nike en Bol.com. Ook ontwikkelt Luminis eigen oplossingen op het gebied van cloud, Internet of Things, data intelligence, e-sports en e-learning. Luminis onderscheidt zich door aantoonbaar voorop te lopen in technologie en innovatie. Luminis heeft drie kernpunten die verankerd zitten in alles wat we doen: het omarmen van nieuwe technologie, meesterschap en kennis delen. Functiebeschrijving First things first! Het is belangrijk

Bekijk vacature »

Ambitieuze medior developer

Wat je gaat doen: Heb jij al een paar jaar ervaring als developer maar wil jij naar the next level? In ons NextLevelDev Programma helpen wij jou om de volgende stap te zetten: een mooi programma aan trainingen op het gebied van Java, hippe frameworks, Agile/Scrum, OCP-certificering en optioneel: andere JVM-talen als Kotlin en Scala; Cloud (AWS, Azure, GCP) Soc 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

Bekijk vacature »

Integratie expert - Java Developer

Dit ga je doen Nieuw koppelingen ontwerpen, ontwikkelen en implementeren; Je schakelt met de klanten om hen zo goed mogelijk van dienst te zijn. Strategisch kijken naar nieuwe mogelijkheden op bestaande of nieuwe koppelingen zo effectief mogelijk te realiseren; Je bestaande toolset afwegen tegen nieuwe mogelijkheden om integratiedoelen steeds effectiever en/of effcienter te bewerkstelligen; Bestaande software koppelingen beheren, dit zijn koppelingen met zowel interne als externe systemen; Overleg met zowel directe collega's als met stakeholders om nieuwe integratieplannen concreet te maken; Je kunt de junioren meenemen op sleeptouw. Hier ga je werken Onze klant is op zoek naar een ervaren

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 »

Full Stack .NET Developer C# ASP.NET

Samengevat: Deze werkgever is gespecialiseerd in het op afstand bewaken en besturen van machines en processen. Ben jij een ervaren Full Stack .NET Developer? Heb je ervaring met C# en ASP.NET? Vaste baan: .Net Developer C# ASP.NET HBO €3.300 - €4.500 Deze werkgever is een snel groeiende onderneming gespecialiseerd in het op afstand bewaken en besturen van machines en processen, IoT (Internet of Things). Deze werkgever is een veelzijdige organisatie. Je werkt voor de eigen IT organisatie. Zij werken met moderne technologie en staan open voor innovatie. Wil jij bij de top specialisten horen? Ben jij op zoek naar een

Bekijk vacature »

Fullstack of back-end PHP developer

Functie Ieder onderdeel van de software draait op aparte servers en het bestaat dus echt uit verschillende componenten. Het team bestaat uit 4 developers, een klein team dus met korte lijnen. Alles in intern ontwikkeld en je werkt aan alle facetten. Van uitbreiding van de core tot maatwerk voor de klant. Ook liggen er verschillende uitdagingen op servervlak en databases. Je zult de eerste periode veel samenwerken met de lead developer om vervolgens echt je gang te gaan binnen de software. In het team streven ze naast de hoogst haalbare kwaliteit. Hiervoor werken ze nauw met elkaar samen en levert

Bekijk vacature »
Jan terhuijzen

jan terhuijzen

05/07/2014 18:14:43
Quote Anchor link
Ik doe in mijn MVC nu in elke controller dit, als ik een view wil laten zien:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
// Voorbeeld, maakt niet echt uit waar variabelen vandaan komen
$data = array("title" => "Beveiligde pagina"
              "username"
=> $username,
              "css_href" => $url,
              "subpage" => "views/users/settings.php",
              "subpage_content" => "views/users/email-settings.php",
              
              "email" => $email,
              "form_msg" => $form_msg,
              );
            
$this->loadView("views/users/index.php", $data);
?>


Elke controller extends de Base Controller. Daardoor heeft elke controller de methode loadView om een view weer te geven. De methode loadView krijgt ook nog de $data parameter mee, dat is een array met de variabelen die de view nodig heeft. Deze array wordt ge-extract.
Ik kan dus maar 1x data aan de view meegeven. Daardoor moet ik in bijna elke controller opnieuw dezelfde variabelen in de $data array zetten en meegeven aan loadView.
Ik had dus bedacht om een nieuwe laag toe te voegen tussen de controllers. Bijvoorbeeld de UserAreaController voor alles van het gedeelte waar bv. een gebruiker ingelogd moet zijn.
Dan krijg je:
Controller (base controller)
|- UserAreaController
|- (de specifieke controller van een pagina)

In die UserAreaController kan ik dan in de constructor alle (boilerplate) variabelen maken. Het probleem is dus dat ik dan meerdere keren data moet mee kunnen geven aan de view. Terwijl die view nog moet worden gemaakt in een lager gelegen controller.
Wat is dan beter: naast de loadView methode, een nieuwe methode maken in de base controller die bv. storeViewData heet. Dan sla ik daar tijdelijk de data op, totdat loadView wordt aangeroepen. Als die wordt aangeroepen wordt de eerder opgegeven (bewaarde) data ook ge-extract (net als de $data in de loadView parameter) en zo wordt dus alles berijkbaar in het view bestand.
Of helemaal die $data parameter van loadView eruit halen, en via een aparte methode van de base controller de data meegeven. Zodat er een aparte methode is voor het laden (includen) van een view, en een aparte voor het meegeven van de data.
Gewijzigd op 05/07/2014 18:18:28 door Jan terhuijzen
 
PHP hulp

PHP hulp

26/12/2024 22:54:26
 
Frank Nietbelangrijk

Frank Nietbelangrijk

05/07/2014 19:00:54
Quote Anchor link
Jan terhuijzen op 05/07/2014 18:14:43:
Het probleem is dus dat ik dan meerdere keren data moet mee kunnen geven aan de view. Terwijl die view nog moet worden gemaakt in een lager gelegen controller.


Feitelijk is er geen lager gelegen controller.

Dit:
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
18
19
<?php
class Controller
{
    private $a;

    public function a()
    {
    }
}


class UserController extends Controller
{
    private $b;

    public function b()
    {
    }
}

?>


Is (nagenoeg) hetzelfde als
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
<?php
class UserController
{
    private $a;
    private $b;

    public function a()
    {
    }


    public function b()
    {
    }
}

?>
 
Jan terhuijzen

jan terhuijzen

05/07/2014 19:06:45
Quote Anchor link
Ja, maar ik denk ook niet dat dit het probleem is.
Het probleem zit vooral in de volgorde.
Als de view is gemaakt door loadView, kan ik niks meer aan de view veranderen. Een controller om de gebruikersinstellingen te veranderen moet nu dus ook data naar de view sturen die eigenlijk standaard al nodig is. Bijvoorbeeld de begruikersnaam rechts boven in beeld, de href voor de stylesheet etc. Dan zou ik in elke methode (action) van een controller opnieuw een lange array neer moeten zetten. Het is eigenlijk best simpel. Ik zoek gewoon een manier om meerdere keren data naar de view te kunnen sturen uit verschillende controller klassen (lagen) *, vóórdat de view is geladen natuurlijk.

* Dit is natuurlijk heel makkelijk al gedaan door overerving
Gewijzigd op 05/07/2014 19:08:33 door jan terhuijzen
 
Frank Nietbelangrijk

Frank Nietbelangrijk

05/07/2014 19:13:50
Quote Anchor link
Maar goed de een Controller is gewoon een class waarin je private functies kunt aanroepen:

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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
class UserController
{
    public function indexAction()
    {

        $data =  array_merge(
            $this->_getStandardBehavior(),
            array(
                "blabla" => "jajaja",
                "zozozo" => "mooimooi",
            )
        };


        $this->loadView("views/users/index.php", $data);
    }


    public function viewAction()
    {

        $data =  array_merge(
            $this->_getStandardBehavior(),
            array(
                "blabla" => "neeneenee",
                "zozozo" => "oeioeioei",
            )
        };


        $this->loadView("views/users/index.php", $data);
    }


    private _getStandardBehavior()
    {

        return array(
            "title" => "Beveiligde pagina"
            "username"
=> $username,
        );
    }
}


?>


De view laden doe je als allerlaatste inderdaad.
Gewijzigd op 05/07/2014 19:16:07 door Frank Nietbelangrijk
 
Jan terhuijzen

jan terhuijzen

05/07/2014 19:18:13
Quote Anchor link
Dat is ook een manier! i.p.v. de stukjes apart aan de view meegeven kun je ook de data van verschillende plekken halen zoals hier:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$this
->_getStandardBehavior(),
            array(
                "blabla" => "neeneenee",
                "zozozo" => "oeioeioei",
            )

?>

Dan hoef je ook maar 1x de data aan de view te geven.
Gewijzigd op 05/07/2014 19:18:32 door jan terhuijzen
 
Frank Nietbelangrijk

Frank Nietbelangrijk

05/07/2014 19:18:37
Quote Anchor link
Je kunt ook overwegen om per pagina verschillende controllers aan te roepen. de eerste wordt aangeroepen door de router. alle volgende vanuit de view.

index.php (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
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>

<body>
    <nav>
        <?php render('MenuController:indexAction'); ?>
    </nav>

    ...

</body>
</html>
Gewijzigd op 05/07/2014 19:22:46 door Frank Nietbelangrijk
 
Patrick S

patrick S

05/07/2014 20:47:26
Quote Anchor link
Kun je niet de $data attribuut in je Base Controller zetten?

Dus zoiets?

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
18
19
20
21
22
23
24
25
26
class Base_Controller
{
    public $data = array();

    public function __construct()
    {
        $this->data = array("title" => "Beveiligde pagina"
              "username" => $username,
              );  
    }
}

class UsersController extends Base_Controller
{
    public function __construct()
    {
        parent::__construct();
    }

    public function index()
    {
        $this->data['subpage'] = 'views/users/settings.php';
        $this->data['subpage_content'] = 'views/users/email-settings.php';
        $this->loadView("views/users/index.php", $this->data);
    }
}
Gewijzigd op 05/07/2014 20:48:17 door patrick S
 
Frank Nietbelangrijk

Frank Nietbelangrijk

06/07/2014 02:06:51
Quote Anchor link
Ja zeker dat kan ook maar dan zou je dus wel in elke controller met $this->data moeten gaan werken, anders ben je niet consequent bezig.
Gewijzigd op 06/07/2014 02:21:20 door Frank Nietbelangrijk
 
Jan terhuijzen

jan terhuijzen

06/07/2014 23:11:16
Quote Anchor link
Ik doe het gewoon zo: loadView heeft de $data parameter gewoon, en er komt naast loadView nog een andere methode in de base controller die setViewData heet.
De hele view data wordt opgeslagen als property in de base controller.
Zo doe je de data gewoon instellen met setViewData(), en eventueel later nog bij loadView($path, $data).
In loadView heb je dan de $data parameter als een aanvulling op de (eventueel) eerder gevulde $data property van de base controller. In de methode loadView kun je de array dan samenvoegen etc.
Gewijzigd op 06/07/2014 23:12:03 door jan terhuijzen
 



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.