Ricetta semplice per creare l'helper 'showErrors' che in pratica incrementa una variabile e restituisce una stringa.
Creazione Helper
creare il file showErrors.php nella directory /application/views/helpers/
con il seguente contenuto
<?php
class Zend_View_Helper_ShowErrors
{
protected $_count = 0;
public function showErrors() {
$this->_count++;
$output = "I have seen 'The Jerk' {$this->_count} time(s).";
return htmlspecialchars($output);
}
}
Richiamare l'helper dalla view
nella view basta inserire
<?php echo $this->showErrors(); ?>
e il gioco è fatto.
Convenzioni da seguire:
- il file che contiene la classe dell'helper si deve chiamare come l'helper con la lettera iniziale minuscola (showErrors.php)
- la classe dell'helper deve iniziare con Zend_View_Helper_ seguita dal nome dell'helper con la lettera iniziale maiuscola (class Zend_View_Helper_ShowErrors)
- deve esistere nella classe almeno un metodo che si chiama come l'helper con la lettera minuscola iniziale (public function showErrors())
- se l'helper è salvato nella directory views/helpers/ viene caricato il tutto in modo automatico.
Non mi sembra difficile dopo tutto... o no?
Accedere dall'helper alle variabili della view
Visto che il mio helper deve mostrare i messaggi di errore, devo accedere alla variabile $messages che si trova nella view. Normalmente nella view accedo alla variabile semplicemente con $this->messages.
Nell'helper devo fare un passo in più: recuperare l'oggetto view:
Ricetta per gli impazienti:
Aggiungo un metodo nell'helper che si chiama setView che riceve l'oggetto view e lo salva in una variabile e poi è possibile utilizzarlo in tutti i metodi.
<?php
class Zend_View_Helper_ShowErrors
{
protected $_count = 0;
public $view;
public function setView(Zend_View_Interface $view) {
$this->view = $view;
}
public function showErrors() {
if (isset($this->view->messages)) {
$this->_count++;
$output = "I have seen 'The Jerk' {$this->_count} time(s).";
return htmlspecialchars($output);
}
}
}
in questo modo posso accedere ad ogni elemento della view semplicemente con
$this->view-> (ad esempio alle variabili impostate dal controller come nel mio caso)
versione definitiva
in ogni caso questo e' l'helper che utilizzo nel mio codice
<?php
class Zend_View_Helper_ShowErrors
{
public $view;
public function setView(Zend_View_Interface $view) {
$this->view = $view;
}
public function showErrors() {
if (isset($this->view->messages)) {
$output = "<div id=\"message\">";
foreach ($this->view->messages as $field => $messages) {
foreach ($messages as $message) {
$output .= $this->view->escape($message) . "<br />\n";
}
$output .= "<br />";
}
$output .= "</div>";
return $output;
}
}
}
0 commenti:
Posta un commento