Примена на MVC во PHP
Да погледнеме како заеднички се применува сè научено. Да претпоставиме, на пример, дека на нашата веб-страница има некои статии-страници. Ние сакаме или да прикажеме една статија, или да ги прикажеме сите статии. Да разгледаме како да го направиме ова во нашиот фрејмворк.
Табела во базата на податоци
За почеток, ќе креираме табела pages
во базата на податоци. Ќе додадеме колони id,
title и text. Ќе ја пополниме оваа
табела со некои податоци
преку PhpMyAdmin.
Модел
Ќе направиме модел со метод за добивање на еден запис и метод за добивање на сите записи:
<?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");
}
}
?>
Рутирање
Ќе направиме соодветно рутирање:
<?php
use \Core\Route;
return [
new Route('/page/:id', 'page', 'one'),
new Route('/pages/', 'page', 'all'),
];
?>
Контролер
Ќе направиме контролер:
<?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 = 'Листа на сите страници';
$pages = (new Page) -> getAll();
return $this->render('page/all', [
'pages' => $pages,
'h1' => $this->title
]);
}
}
?>
Прикази
Ќе направиме приказ за методот one:
<h1><?= $h1; ?></h1>
<div id="content">
<?= $text; ?>
</div>
Ќе направиме приказ за методот all:
<h1><?= $h1; ?></h1>
<div id="content">
<table>
<tr>
<th>id</th>
<th>наслов</th>
<th>линк</th>
</tr>
<?php foreach ($pages as $page): ?>
<tr>
<td><?= $page['id']; ?></td>
<td><?= $page['title']; ?></td>
<td><a href="/page/<?= $page['id']; ?>/">линк до страницата</td>
</tr>
<?php endforeach; ?>
</table>
</div>
Практични задачи
Да претпоставиме дека во вашата база на податоци има производи.
Секој производ содржи наслов, цена и
количина, опис. Имплементирајте приказ на еден
производ по id и на сите производи слично
како што е направено во теоријата.