⊗ppMVUFmAE 19 of 35 menu

MVC:n käyttö PHP:ssä

Katsotaanpa kaiken opitun yhteiskäyttöä. Oletetaan esimerkiksi, että sivustollamme on joitain artikkeleita-sivuja. Haluamme joko näyttää yhden artikkelin tai näyttää kaikki artikkelit. Tarkastellaan, kuinka tämä tehdään kehystimessämme.

Taulu tietokannassa

Aluksi luomme taulun pages tietokantaan. Lisätään sinne sarakkeet id, title ja text. Täytetään tämä taulu joillakin tiedoilla PhpMyAdminin kautta.

Malli

Teemme mallin, jossa on metodi yhden tietueen hakemiseen ja metodi kaikkien tietueiden hakemiseen:

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

Reititys

Teemme vastaavan reitityksen:

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

Ohjain

Teemme ohjaimen:

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

Näkymät

Teemme näkymän metodille one:

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

Teemme näkymän metodille all:

<h1><?= $h1; ?></h1> <div id="content"> <table> <tr> <th>id</th> <th>title</th> <th>linkki</th> </tr> <?php foreach ($pages as $page): ?> <tr> <td><?= $page['id']; ?></td> <td><?= $page['title']; ?></td> <td><a href="/page/<?= $page['id']; ?>/">linkki sivuille</td> </tr> <?php endforeach; ?> </table> </div>

Käytännön tehtävät

Oletetaan, että tietokannassasi on tuotteita. Jokainen tuote sisältää nimen, hinnan ja määrän, kuvauksen. Toteuta yhden tuotteen näyttäminen id:n perusteella ja kaikkien tuotteiden näyttäminen vastaavasti kuin teoriassa on tehty.

Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää