MVC variabele naar view
Roy B
12/06/2014 14:40:49Ik ben bezig met een eigen MVC. In mijn view heb ik een aantal variabele die gevuld moeten worden. Dit gebeurt naar mijn inziens in de controller, maar de manier waarop ik het nu doe vind ik nog niet heel netjes.
Iemand tips? :)
Iemand tips? :)
Code (php)
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
40
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
40
// news.php
<html>
<head>
<title><?php echo $title; ?></title>
</head>
<body>
<h1><?php echo $title; ?></h1>
<?php
foreach($newsitems AS $newsitem)
{
echo "<h2>".$newsitem["title"]."</h2>";
echo "<p>".$newsitem["description"]."</p>";
}
?>
</body>
</html>
// newsitem.controller.php
<?php
class NewsitemController
{
private $_model;
public function __construct($model)
{
$this->_model = $model;
}
public function getAll()
{
$title = "Nieuws";
$newsitems = $this->_model->getAll();
include "views/news.php";
}
}
?>
<html>
<head>
<title><?php echo $title; ?></title>
</head>
<body>
<h1><?php echo $title; ?></h1>
<?php
foreach($newsitems AS $newsitem)
{
echo "<h2>".$newsitem["title"]."</h2>";
echo "<p>".$newsitem["description"]."</p>";
}
?>
</body>
</html>
// newsitem.controller.php
<?php
class NewsitemController
{
private $_model;
public function __construct($model)
{
$this->_model = $model;
}
public function getAll()
{
$title = "Nieuws";
$newsitems = $this->_model->getAll();
include "views/news.php";
}
}
?>
Gewijzigd op 12/06/2014 14:45:31 door Roy B
PHP hulp
27/12/2024 15:32:34Wouter J
12/06/2014 14:49:44Je moet een View layer in je classes inbouwen. Deze laad de template, zorgt voor de variabelen, etc.
Ong. zoiets:
Ong. zoiets:
Code (php)
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
class ViewModel
{
public $parameters = array();
public $template;
public function render($template = null, array $parameters = array())
{
extract(array_merge($this->parameters, $parameters));
include $template ?: $this->template;
}
}
// in controller
public function allAction()
{
$newsItems = $this->_model->getAll();
return $this->viewModel->render('views/news.php', array(
'title' => 'Nieuws',
'news_items' => $newsItems,
));
}
?>
class ViewModel
{
public $parameters = array();
public $template;
public function render($template = null, array $parameters = array())
{
extract(array_merge($this->parameters, $parameters));
include $template ?: $this->template;
}
}
// in controller
public function allAction()
{
$newsItems = $this->_model->getAll();
return $this->viewModel->render('views/news.php', array(
'title' => 'Nieuws',
'news_items' => $newsItems,
));
}
?>
Gewijzigd op 12/06/2014 14:50:00 door Wouter J