MVC alkalmazása PHP-ban
Nézzük meg a tanultak együttes alkalmazását. Tegyük fel például, hogy a weboldalunkon vannak cikkek-oldalak. Vagy egy cikket akarunk megjeleníteni, vagy az összes cikket. Vizsgáljuk meg, hogyan tehetjük ezt meg a keretrendszerünkben.
Tábla az adatbázisban
Kezdetként hozzunk létre egy pages
táblát az adatbázisban. Adjunk hozzá id,
title és text oszlopokat. Töltsük ki ezt a
táblát néhány adattal
a PhpMyAdmin-on keresztül.
Modell
Készítsünk egy modellt egy rekord lekérésére és egy metódussal az összes rekord lekérésére:
<?php
namespace Project\Models;
use \Core\Model;
class Page extends Model
{
public function getById($id)
{
return $this->findOne("SELECT * FROM pages WHERE id=$id");
}
public function getAll()
{
return $this->findMany("SELECT id, title FROM pages");
}
}
?>
Útválasztás
Készítsük el a megfelelő útválasztást:
<?php
use \Core\Route;
return [
new Route('/page/:id', 'page', 'one'),
new Route('/pages/', 'page', 'all'),
];
?>
Vezérlő
Készítsük el a vezérlőt:
<?php
namespace Project\Controllers;
use \Core\Controller;
use \Project\Models\Page;
class PageController extends Controller
{
public function one($params)
{
$page = (new Page) -> getById($params['id']);
$this->title = $page['title'];
return $this->render('page/one', [
'text' => $page['text'],
'h1' => $this->title
]);
}
public function all()
{
$this->title = 'Az összes oldal listája';
$pages = (new Page) -> getAll();
return $this->render('page/all', [
'pages' => $pages,
'h1' => $this->title
]);
}
}
?>
Nézetek
Készítsük el a nézetet a one metódushoz:
<h1><?= $h1; ?></h1>
<div id="content">
<?= $text; ?>
</div>
Készítsük el a nézetet a all metódushoz:
<h1><?= $h1; ?></h1>
<div id="content">
<table>
<tr>
<th>id</th>
<th>cím</th>
<th>hivatkozás</th>
</tr>
<?php foreach ($pages as $page): ?>
<tr>
<td><?= $page['id']; ?></td>
<td><?= $page['title']; ?></td>
<td><a href="/page/<?= $page['id']; ?>/">hivatkozás az oldalra</td>
</tr>
<?php endforeach; ?>
</table>
</div>
Gyakorlati feladatok
Tegyük fel, hogy vannak termékei az adatbázisában.
Minden termék tartalmaz nevet, árat és
mennyiséget, leírást. Valósítsa meg egy
termék megjelenítését id alapján és az összes terméket hasonlóan
ahogy az elméletben is meg van csinálva.