Zbatimi i MVC në PHP
Le të shohim zbatimin e përbashkët të të gjitha të nxënit. Le të themi, për shembull, në faqen tonë të internetit ka disa faqe-artikuj. Ne duam ose të shfaqim një artikull, ose të shfaqim të gjithë artikujt. Le të shqyrtojmë se si ta bëjmë këtë në kornizën tonë.
Tabela në DB
Për të filluar, le të krijojmë një tabelë pages
në bazën e të dhënave. Le të shtojmë kolonat id,
title dhe text. Le ta plotësojmë këtë
tabelë me disa të dhëna
përmes PhpMyAdmin.
Modeli
Le të krijojmë një model me një metodë për marrjen e një regjistrimi dhe një metodë për marrjen e të gjithë regjistrimeve:
<?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");
}
}
?>
Routingu
Le të krijojmë routingun përkatës:
<?php
use \Core\Route;
return [
new Route('/page/:id', 'page', 'one'),
new Route('/pages/', 'page', 'all'),
];
?>
Kontrolluesi
Le të krijojmë kontrolluesin:
<?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 = 'Lista e të gjitha faqeve';
$pages = (new Page) -> getAll();
return $this->render('page/all', [
'pages' => $pages,
'h1' => $this->title
]);
}
}
?>
Pamjet
Le të krijojmë pamjen për metodën one:
<h1><?= $h1; ?></h1>
<div id="content">
<?= $text; ?>
</div>
Le të krijojmë pamjen për metodën all:
<h1><?= $h1; ?></h1>
<div id="content">
<table>
<tr>
<th>id</th>
<th>title</th>
<th>link</th>
</tr>
<?php foreach ($pages as $page): ?>
<tr>
<td><?= $page['id']; ?></td>
<td><?= $page['title']; ?></td>
<td><a href="/page/<?= $page['id']; ?>/">link në faqe</td>
</tr>
<?php endforeach; ?>
</table>
</div>
Detyra praktike
Le të themi se në bazën tuaj të të dhënave ka produkte.
Çdo produkt përmban emër, çmim dhe
sasi, përshkrim. Implementoni shfaqjen e një
produkti sipas id dhe të gjithë produkteve ngjashëm
me atë që është bërë në teori.