Prije ovoga tutoriala potrebno je baciti oko na ovu objavu.
U CI kontroler return string je ono što je prikazano vizualno u internet pregledniku.
class HelloController extends BaseController { public function index() { return "ja sam tekst prikazan u pregledniku!"; } }
View funkciju zovemo da učitamo template (html predložak) iz “app/View” direktorija.
class HelloController extends BaseController { public function index() { return view("moja-view-datoteka.php"); } }
Ili ako imamo pod-direktorij “app/View/header”
class HelloController extends BaseController { public function index() { return view("header/moja-view-datoteka.php"); } }
Kako prenosimo podatke iz kontrolera u predložak?
Podatke prenosimo iz kontrolera u predložak preko asocijativnog array-a.
class HelloController extends BaseController { public function index() { $viewData = [ 'alpha' => 'alpha text', 'beta' => 'beta text', ]; return view("moja-view-datoteka.php", $viewData); } }
moja-view-datoteka.php
<?php echo $alpha ?> <br> <?php echo $beta ?>
U pregledniku dobivamo:
alpha text beta text
Možemo li imati html komponente? Da.
Imamo “main” predložak. I u njemu postavljamo varijable predloška.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title><?= $this->renderSection("title"); ?></title> </head> <body> <?= $this->renderSection("body"); ?> </body> </html>
Znači ovdje imamo dvije varijable predloška: “title” i “body”. Budući da kontroler return može vratiti samo jedan predložak, moramo uvesti “main” predložak i onda postaviti podatke u varijable.
<!-- uvezi main.php --> <?=$this->extend("main")?> <!-- postavi naslov --> <?=$this->section("title")?> Moj naslov stranice <?=$this->endSection()?> <!-- postavi body sadržaj --> <?=$this->section("body")?> <?php echo $alpha ?> <br> <?php echo $beta ?> <?=$this->endSection()?>
Kako do public JS/CSS poveznica?
<link rel="stylsheet" href="<?= base_url('public/css/style.css') ?>"/>