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
]);
}
}
?>
წარმოდგენები (Views)
შევქმნათ წარმოდგენა მეთოდისთვის one:
<h1><?= $h1; ?></h1>
<div id="content">
<?= $text; ?>
</div>
შევქმნათ წარმოდგენა მეთოდისთვის all:
<h1><?= $h1; ?></h1>
<div id="content">
<table>
<tr>
<th>id</th>
<th>title</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-ის მიხედვით და ყველა პროდუქტის ჩვენებას, ისევე
როგორც ეს გაკეთებულია თეორიაში.