⊗ppMVUFmAE 19 of 35 menu

Zastosowanie MVC w PHP

Przyjrzyjmy się wspólnemu zastosowaniu wszystkiego, co zostało poznane. Załóżmy, że na przykład na naszej stronie internetowej znajdują się jakieś artykuły-strony. Chcemy albo pokazać jeden artykuł, albo pokazać wszystkie artykuły. Zobaczmy, jak to zrobić w naszym frameworku.

Tabela w bazie danych

Na początek utwórzmy tabelę pages w bazie danych. Dodajmy kolumny id, title i text. Wypełnijmy tę tabelę jakimiś danymi przez PhpMyAdmin.

Model

Stwórzmy model z metodą do pobierania jednego rekordu i metodą do pobierania wszystkich rekordów:

<?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

Skonfigurujmy odpowiedni routing:

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

Kontroler

Stwórzmy kontroler:

<?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 wszystkich stron'; $pages = (new Page) -> getAll(); return $this->render('page/all', [ 'pages' => $pages, 'h1' => $this->title ]); } } ?>

Widoki

Stwórzmy widok dla metody one:

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

Stwórzmy widok dla metody 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 do strony</td> </tr> <?php endforeach; ?> </table> </div>

Zadania praktyczne

Załóżmy, że w Twojej bazie danych znajdują się produkty. Każdy produkt zawiera nazwę, cenę, ilość i opis. Zaimplementuj wyświetlanie jednego produktu według id oraz wszystkich produktów, podobnie jak to zrobiono w części teoretycznej.

Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć