⊗ppMVUFmAE 19 of 35 menu

PHP-də MVC-nin Tətbiqi

Gəlin öyrənilənlərin hamısının birgə tətbiqinə baxaq. Məsələn, tutaq ki, saytımızda bəzi məqalə-səhifələr var. Biz ya bir məqaləni göstərmək, ya da bütün məqalələri göstərmək istəyirik. Gəlin bunu frameworkumuzda necə edə biləcəyimizə baxaq.

Verilənlər Bazasında Cədvəl

Əvvəlcə verilənlər bazasında pages cədvəlini yaradaq. Oraya id, titletext sütunlarını əlavə edək. Bu cədvəli PhpMyAdmin vasitəsilə bəzi məlumatlarla dolduraq.

Model

Bir yazını almaq üçün bir metod və bütün yazıları almaq üçün bir metod olan bir model edək:

<?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"); } } ?>

Routing

Uyğun routingi edək:

<?php use \Core\Route; return [ new Route('/page/:id', 'page', 'one'), new Route('/pages/', 'page', 'all'), ]; ?>

Controller

Controller edək:

<?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 = 'Butun səhifələrin siyahısı'; $pages = (new Page) -> getAll(); return $this->render('page/all', [ 'pages' => $pages, 'h1' => $this->title ]); } } ?>

View-lar

one metodu üçün view edək:

<h1><?= $h1; ?></h1> <div id="content"> <?= $text; ?> </div>

all metodu üçün view edək:

<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']; ?>/">səhifəyə link</td> </tr> <?php endforeach; ?> </table> </div>

Praktik Tapşırıqlar

Tutaq ki, verilənlər bazanızda məhsullar var. Hər bir məhsul ad, qiymət və miqdar, təsviri ehtiva edir. Bir məhsulun id-yə görə və bütün məhsulların çıxarılmasını nəzərdə keçirdiyimiz kimi həyata keçirin.

mshibncsde