[MVC] Data from model to view

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

coördinator kantoorautomatisering (32-36 uur

Breng jij onze kantoorautomatisering naar een hoger (online) plan? Jouw uitdaging De NTS heeft ruim 100 medewerkers. Om onze mensen hun werk te laten doen hebben ze een goed werkende werkplek nodig. Dat bestaat uit hardware: zoals pc, laptop, telefoon, tablet, software zoals Office365 suite en aanvullende bedrijfsapplicaties en een netwerk. We zijn druk bezig met het vernieuwen van onze kantoorautomatisering; we willen onze medewerkers overal, altijd op elk device kunnen laten samenwerken. Om hierin de regie te kunnen nemen zoeken we jou als coördinator kantoorautomatisering! De kantoorautomatiseringsondersteuning werd in het verleden door een Shared Service geleverd. Het Shared Service wordt opgeheven en de

Bekijk vacature »

Banaan Krom

Banaan Krom

08/03/2013 12:20:03
Quote Anchor link
Heey Guys,

I'm very new to MVC and also to this forum. I needed some help, as i started to try out the MVC pattern, i get a little confused on how to send my collected mysql data, from the model to the view. Tried out alot of things but doesn't seen to work.

Is there a way this need to be assigned as i read somewhere before?
The way i'm doing it now is:
Function iside my model
Quote:

public function run() {
$sth = $this->db->prepare("SELECT * FROM articles");
$sth->execute();
$result = $sth->fetchAll();
var_dump($result);
$this->text = $result[0]['text'];
}

And mine view:
Quote:
echo $this->text;
 
PHP hulp

PHP hulp

01/10/2020 00:16:30
 
Erwin H

Erwin H

08/03/2013 12:25:35
Quote Anchor link
I will answer in English, but I think most people would prefer Dutch here.

Anyway, $this always refers to the object you are in. Outside of the object, $this either doesn't exist, or refers to another object (the object you are in at that moment). Transferring data from one object to the other through references to $this will therefore never work.

What you will have to do is either return the data from the model object by doing
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
return $result[0]['text'];
?>

at the end, or to create a getter in the model object that the view object can call to get the data:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
//in the model object
public function getText(){
  return $this->text;
}

?>

(notice that I do use $this here, because you are still in the model object!)
Gewijzigd op 08/03/2013 12:26:11 door Erwin H
 
Ozzie PHP

Ozzie PHP

08/03/2013 12:26:09
Quote Anchor link
This is a Dutch forum, you can speak Dutch here.

Je mag gewoon in het Nederlands praten.
 
Banaan Krom

Banaan Krom

08/03/2013 13:22:09
Quote Anchor link
Ok mijn excuses, kan ook Nederlands dus laat ik dat maar doen, zal dan zodadelijk gelijk even de forum regels doornemen.

Verder heb ik nu me function run() aangevuld met jou return, en de functie getText toegevoegd, werkt nog niet. Want wat ik me afvraag is inside of getText(); moet hij toch weten wat return $this->text; inhoud? Wordt verder nog nergens gedefnieerd. Ook probeer ik een manier te vinden om de functie in mijn view aan te roepen.

Maybe het is een stomme vraag. Maar de examples op het internet zijn te verschillend van elkaar, en zou dus een goede manier willen habben om dit op de rest van mijn functie's toe te passen
 
Erwin H

Erwin H

08/03/2013 13:29:34
Quote Anchor link
Wat is je basis voor wat betreft het gebruik van klassen in php? De vragen die je stelt zijn namelijk heel erg elementair en je zal denk ik eerst dat deel van scripten onder de knie moeten krijgen voor je aan een MVC model kunt gaan beginnen.
 
Banaan Krom

Banaan Krom

08/03/2013 13:34:47
Quote Anchor link
Natuurlijk, met het gebruik van classes zoals in OOP, heb ik minder moeite, daar roep ik me class op new class en vervolgens mijn functie. Echter ontbreekt er misschien wel wat basis, merk zelf dat ik het meer onder de knie begin te krijgen, en wou daarom een kijkje nemen in het MVC patroon. Door middel van een tutorial de basis opgezet en nu ben ik hier een beetje zelf in aan het knoeien. Als je tips heb hoe ik het dus kan doen ^ zou ik er erg blij mee zijn, als je tips heb hoe ik het mezelf beter aan kan leren, zou je me helemaal blij maken!
 
Erwin H

Erwin H

08/03/2013 13:44:58
Quote Anchor link
Als je ervaring met classes hebt dan zou je weten dat $this alleen bestaat binnen een class. Dan zou je ook moeten weten hoe binnen een class met variabelen wordt omgegaan etc. Dus die vragen bevreemden mij een beetje.

Wat ik zou aanraden is echt meer ervaring op te doen met het werken met klassen. Het gebruik van design patterns kan heel mooi zijn, veel werk schelen en je applicaties robuster maken, maar in het begin is het een behoorlijke kluif. Het is een extra abstractie laag die voor veel mensen moeilijk te doorgronden is in het begin. Voorwaarde om er doorheen te komen is wel dat je een goed begrip hebt van het werken met klassen in php.

Nu ben ik niet zo van de tutorials (dus ik heb geen lijst met goede linkjes), maar hier is in elk geval een begin:
http://www.phphulp.nl/php/tutorial/overig/oop-beginnershandleiding-php5/701/
 
Banaan Krom

Banaan Krom

08/03/2013 13:48:34
Quote Anchor link
Erwin H, bedankt, zal een stapje terug doen en kijken.
 
Jasper DS

Jasper DS

08/03/2013 15:29:26
Quote Anchor link
Je zal "moeten" werken met een domain-object. Een domain object is niets minder dan een klasse waarin data wordt vastgehouden. De model bestaat dus uit 2 klassen. Domain-object en de mapper.

In de mapper staat je SQL (of een andere opslag methode) en daar maak je een domain-object aan. Dat domein object moet je functie in je mapper returnen naar je controller, je controller geeft dat door aan je view en dan kan je dat object in je view gebruiken.
 



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.