Hallo,

ik heb een zeer simpele mvc tutorial doorlopen, probeer dat toe te passen, maar ik maak een fout, die ik maar niet goed krijg.

Het gaat over een mail functie op een site. Ik heb gelezen en toegepast dat de mail inhoud in de view thuishoort en dat de post variabelen in de controller hernoemd worden tot static variabelen.

Dit resulteert in de mailview.html:

  setlocale (LC_TIME, "nl_NL");
  $datum			= strftime("%#e %B %Y", strtotime(NOW));
  $to				= "[email protected]";
  $aanhef 		= ControlClass::getPost()[aanhef];
//etc...			
  $message	= '<h5>'.$datum.'</h5>
//etc...
  $mail = new MailModel($message, $aanhef, $naam, $email, $onderwerp, $to);
  echo MailModel::getResult();


en de mailModel.php:

  private static $result;
  require_once('assets/phpMailer/PHPMailer-master/class.phpmailer.php');
  $mail = new PHPMailer(); 
//etc..
  if(!$mail->Send()) {
	 self::$result = '<h1 class="center">Helaas is door een technisch defect de mail niet verstuurd.</h1><br>  <p>Gelieve het nogmaals te proberen.</p>'; } 
//etc..
}
public static function getResult() {
	return self::$result;
}	


Ik voel ergens wel aan dat een view geen model object mag aanmaken, maar op de een of andere manier kan ik niet bedenken (ook na het lezen van verscheidene sites over dit onderwerp), hoe dan wel te handelen (ik zit denk ik nog te vast in het procedureel denken).

please help.
Als je het volgende in je baseController zet:

<?php
public function loadView($file, $data = null) {

        $file = 'view/' . $file; // Pad aanpassen

        if($data) {
            extract($data);
        }

        ob_start();

        include($file);

        $output = ob_get_contents();

        ob_end_clean();

        echo $output;

    }
?>


Kan je in je controller het volgende doen:

<?php
$outputVariables = array('kleur' => 'groen');
$this->loadView('template.php', $outputVariables);
?>


In je view is dan $kleur beschikbaar :-)
<?php
ob_start();

include($file);

$output = ob_get_contents();

ob_end_clean();

echo $output;
?>

Curieus.

Lees het bovenstaande nog eens goed, en vraag jezelf af waarom je dit zo doet. Ik zie niet wat de toegevoegde waarde van output buffering hier is.

ob_get_contents() en ob_end_clean() kun je trouwens combineren tot ob_get_clean().
Dit is een stukje van een functie die ik zelf gebruik. Ik heb caching, logging etc.. ff eruit gehaald.


ob_get_contents() en ob_end_clean() kun je trouwens combineren tot ob_get_clean().


Dat wist ik dan weer niet, thanks!
Ik geloof dat het kwartje begint te vallen, dank je

Reageren