Zend Framework Action

Contenuto dinamico
Nel precedente post, si è parlato poco su come assegnare un parametro alla vista. Questo valore viene inviato dal controller. Ciò accade grazie Action Controller. Non voglio parlare molto nel dettaglio di Action Controller, ma impareremo a implementare l’Action Controller nello sviluppo web.
In primo luogo, ricordiamoci semplicemente di passare dal valore del controller per la visualizzazione. Abbiamo scritto un codice come questo:
Copia codice

<?php
require_once 'Zend/Controller/Action.php';
class IndexController extends Zend_Controller_Action
{
  public function indexAction()
  {
    $this->view->assign('title', 'Ciao, Mondo!');
  }
}
?>
View lo prenderà con questo modo:
Copia codice

  <? echo $this->escape($this->title); ?>
Se ancora non si sa di cosa si parla, si prega di leggere questa sezione: Zend Framework Intro.
Ok, ora, aggiungiamo uno o più parametri quali:
Copia codice

<?php
require_once 'Zend/Controller/Action.php';
class IndexController extends Zend_Controller_Action
{
  public function indexAction()
  {
    $this->view->assign('title', 'Ciao, Mondo!');
	$this->view->assign('wellcome','Benvenuti nel mio sito. Questo sito è realizzato con Zend Framework. Buon divertimento!');
	$this->view->assign('webmaster','Manager');
  }
}
?>
Poi, cambiare il file “index.phtml” sotto la cartella application/views/scripts/index.
Copia codice

<!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);?>
   
  <?=$this->escape($this->webmaster);?>
</body>
</html>
Puntare il browser su http://localhost/test/zend/ciaoMondo/web_root/, o dove l’avete creata l’applicazione web. Si potrebbe recuperare qualcosa come il seguente output:

Struttura URL e Controller
L’URL è una parte importante quando si sviluppano applicazioni web. Li usiamo per saltare tra le pagine. Come sappiamo, ogni framework ha le sue regole per gli URL. Si tratta di una chiave per comprendere come funziona il framework. Ora, parleremo delle regole in Zend Framework.
Zend Framework rompe l’URL in mille pezzi. I pezzi sono disposti come segue: http://hostname/controller/action/parametri. Guardate i nostri url che abbiamo usato per accedere alla ciao pagina: http://localhost/test/zend/ciaoMondo/web_root/. Assumere che http://hostname sia lo stesso che http://localhost/test/zend/ciaoMondo/web_root/. Percorso successivo è il controller. Provate a puntare il browser a http://localhost/test/zend/ciaoMondo/web_root/index. Otteniamo lo stesso con http://localhost/test/zend/ciaoMondo/web_root/. Perché? di default, http://localhost/test/zend/ciaoMondo/web_root/ accederà al controller index. S’inizia a prendere l’idea?
Lo so, non sei paziente e testare subito con un altro controller. Che ne dici di usare altro controller chiamato “user”? Non importa. Dalla teoria di cui sopra, si accederà con http://localhost/test/zend/ciaoMondo/web_root/user. Facciamolo.
In primo luogo, creare il nome del controller “UserController“. Creare un file denominato “UserController” all’interno application/controller. Inserire il seguente codice:
Copia codice

<?php
require_once 'Zend/Controller/Action.php';
class UserController extends Zend_Controller_Action
{
  public function indexAction()
  {
    $this->view->assign('name', 'Manager');
    $this->view->assign('title', 'Ciao');
  }
}
?>
Successivamente, creare una cartella denominata “user” sotto la cartella ciaoMondo\application\views\scripts. Creare un file denominato “index.phtml” all’interno della cartella user. Inserire il seguente codice:
Copia codice

<!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><?=$this->escape($this->title);?>, <?=$this->escape($this->name);?></h1>
</body>
</html>
Ora, puntare il browser su http://localhost/test/zend/ciaoMondo/web_root/user.
Struttura URL e Action
Basta ricordare, abbiamo una regola come questa: http://hostname/controller/action/parametri.
Per semplicità, action è il metodo che si trova nella nostra classe sotto la cartella controller. Guardate il nostro codice:
Copia codice

<?php
require_once 'Zend/Controller/Action.php';
class UserController extends Zend_Controller_Action
{
  public function indexAction()
  {
    $this->view->assign('name', 'Manager');
    $this->view->assign('title', 'Ciao');
  }
}
?>
Sopra, abbiamo il nome di action come “index“. Denominazione in Zend Framework, per aggiungere l’azione. Così, abbiamo un’azione “indexAction“. Quando si chiama questo controller (come user) e non si specifica azione, sarà chiamato indexAction di default.
Ora, aggiungiamo un’altro metodo alla ckasse, ad esempio “nameAction” come segue:
Copia codice

  public function nameAction()
  {
    $this->view->assign('name', 'Manager');
    $this->view->assign('title', 'User Name');
  }
Qui di seguito, il nostro UserController completo:
Copia codice

<?php
require_once 'Zend/Controller/Action.php';
class UserController extends Zend_Controller_Action
{
  public function indexAction()
  {
    $this->view->assign('name', 'Manager');
    $this->view->assign('title', 'Ciao');
  }
  public function nameAction()
  {
    $this->view->assign('name', 'Manager');
    $this->view->assign('title', 'Nome Utente');
  } 
}
?>
Successivamente, creare un file chiamato “name.phtml” all’interno della cartella views/scrips/user . Inserire il seguente codice:
Copia codice

<!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><?=$this->escape($this->title);?>, <?=$this->escape($this->name);?></h1>
</body>
</html>
Ora, puntare il browser su http://localhost/test/zend/ciaoMondo/web_root/user/name
I parametri GET
Ora, l’ultima parte o i parametri URL nella Zend Framework. Ok, quale è la norma in Zend Framework? Guardate l’URL di questo esempio:
Copia codice

http://hostname/user/name/username/Manager/gender/man
Siamo in grado di interpretarlo in questo modo:

  1. Controller = user
  2. Action = name
  3. username = Manager
  4. gender = man

Qual è la vostra conclusione? Sì, che abbiamo formula generale come questa:

Copia codice

http://hostname/controller/action/var1/value1/var2/value2/...
Come catturare i parametri? Ok, possiamo impararlo da un esempio. Aprire UserController.php all’interno della cartella application/controller. Aggiornando il file diventa in questo modo:
Copia codice

<?php
require_once 'Zend/Controller/Action.php';
class UserController extends Zend_Controller_Action
{
  public function indexAction()
  {
    $this->view->assign('name', 'Manager');
    $this->view->assign('title', 'Ciao');
  }
  public function nameAction()
  {
    $request = $this->getRequest();
    $this->view->assign('name', $request->getParam('username'));
    $this->view->assign('gender', $request->getParam('gender'));	  
    $this->view->assign('title', 'Nome Utente');
  }
}
?>
Fare attenzione alle linee 15-17. È chiaro, non è vero?
Per ultimo aggiornare la view: “name.phtml“:
Copia codice

<!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><?=$this->escape($this->title);?>, <?=$this->escape($this->name);?></h1>
  <h2>Gender: <?=$this->escape($this->gender);?></h2>
</body>
</html>
Includendo Header e Footer
Ultimo post di questa serie, si descriverà come includere i modelli per lo header e il footer. Lo so, questo non ha alcun rapporto con l’Action dello Zend Framework, ma questa conoscenza può diventare utile per voi per costruire un sito web.
Creare un file denominato “header.phtml” sotto la cartella views/scripts/user. Inserire il seguente codice:
Copia codice

<!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>
<div id="header">
Mio Zend Framework
</div>
Ora, creare un file denominato “footer.phtml” sotto la cartella views/scripts/user. Inserire il seguente codice:
Copia codice

<div id="footer">
By miosito.net
</div>
</body>
</html>
Per ultimo, aggiornare “name.phtml” sotto la cartella views/scripts/user con il seguente codice:

Copia codice

<? include "header.phtml"; ?>
  <h1><?=$this->escape($this->title);?>, <?=$this->escape($this->name);?></h1>
  <h2>Gender: <?=$this->escape($this->gender);?></h2>
<? include "footer.phtml"; ?>
Ora, puntare il browser su http://localhost/test/zend/ciaoMondo/web_root/user/name/username/Manager/gender/man