NetHq Blog


A rossz legjobb kritikája az, ha megmutatjuk, hogyan kell jobban csinálni.

Zend Framework programozás alapok - Controller és View létrehozása

Nightvis, 2012.05.11 00:41
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.

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é.

Tartalom közösségi megosztása: