03 Controller és View létrehozása

Default book

application/views/scripts

A következő lépésben a FrontControllert hozzuk létre, amely minden kérést elkap és vetérli a hozzá tartozó eseményeket. A fájlok elnevezése és helye nagyon fontos, továbbá a benne taláható osztályok nevei is fontosak. Az útvonalak alapján az application/controllers könyvtárban kell létrehozni az IndexController.php fájlt.

Ebben a fájlban fogja keresni a {Controllernév}Controller osztályon belül az keresi az {actionname}Action() nevű függvényt.

Jelen esetben tehát:

application/controllers/IndexController.php => IndexController a class bneve és indexAction() a függvény neve:

<?php
require_once 'Zend/Controller/Action.php';

class IndexController extends Zend_Controller_Action
{
  public function indexAction()
  {
    $this->view->assign('title', 'Hello, World!');
  }
}

 

A View állományok határozzák a meg amegjelenést. A View fájlok helye az application/views/scripts könyvtár. Itt egy sablonfájl található. A sablonfájlok hasonlóak a Smarty által használtakhoz, de azoknál sokkal egyszerűbbek. A Views könyvtár helye és neve ekkor:

 application/views/scripts/index/index.phtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><? echo $this->escape($this->title); ?></title>
</head>

<body>
  <h1><? echo $this->escape($this->title); ?></h1>
</body>
</html>

A fenti IndexController fájlban határozzuk meg azoknak a változóknak a neveit, amelyeket itt az index.phtml fájlban behelyettesítünk.

A tartalmat a Zend_View osztály adja meg számunkra.

Hogyan lehet dinamikus tartalmakat megjeleníteni az oldalon, Ezt az alábbiakban mutatom meg. Módosítsuk a korábban létrehozottIndexController.php és index.phtml fájlokat:

<?php
require_once 'Zend/Controller/Action.php';

class IndexController extends Zend_Controller_Action
{
  public function indexAction()
  {
    $this->view->assign('title', 'Hello, World!');
    $this->view->assign('welcome', 'Isten hozott!');
  }
}

Az index.phtml pedig legyen ez:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><? echo $this->escape($this->title); ?></title>
</head>

<body>
  <h1><? echo $this->escape($this->title); ?></h1>

<?=$this->escape($this->wellcome);?></body>
</html>

A fenti példában a $this->escape() függvény biztosítja, hogy veszélyes karakterek ne kerüljenek ki a webre. Ezt később az adatbázisok használatánál kell kerülni.

A <?= az úgynevezett asp tag, amit külön engedélyezni kell a php-ban. Ez rövidebb adatkiiratást tesz lehetővé.