php zend-framework view-helpers

php - Zend vista ayudante con múltiples métodos?



zend-framework view-helpers (3)

Esta es una modificación de la sugerencia de Gordon de poder usar más instancias del helper (cada una con sus propias propiedades):

class My_View_Helper_Factory extends Zend_View_Helper_Abstract { private static $instances = array(); private $options; public static function factory($id) { if (!array_key_exists($id, self::$instances)) { self::$instances[$id] = new self(); } return self::$instances[$id]; } public function setOptions($options = array()) { $this->options = $options; return $this; } public function open() { //... } public function close() { //... } }

Puedes usar helper de esta manera:

$this->factory(''instance_1'')->setOptions($options[1])->open(); //... $this->factory(''instance_2'')->setOptions($options[2])->open(); //... $this->factory(''instance_2'')->close(); //... $this->factory(''instance_1'')->close();

Editar: Este es un patrón de diseño llamado Multiton (como Singleton, pero puede obtener más instancias, una por cada tecla dada).

class My_View_Helper_Gender extends Zend_View_Helper_Abstract { public function Gender() { // } } "The class method (Gender()) must be named identically to the concliding part of your class name(Gender).Likewise,the helper''s file name must be named identically to the method,and include the .php extension(Gender.php)" (Easyphp websites J.Gilmore)

Mi pregunta es: ¿Puede A View Helper contener más de un método? ¿Y puedo llamar a otros helpers desde mi ayudante?

Gracias

Luca


No existe tal disposición, pero puedes personalizarla.

Puede ser que pueda pasar el primer parámetro como nombre de función y llamarlo.

p.ej

$ this-> CommonFunction (''showGender'', $ nombre)

aquí showGender será función definida en la clase CommonFunction y $ name será parametr


Sí, los ayudantes pueden contener métodos adicionales . Para llamarlos, debes obtener la instancia de ayudante. Esto se puede lograr al obtener una instancia auxiliar en la Vista

$genderHelper = $this->getHelper(''Gender''); echo $genderHelper->otherMethod();

o haciendo que el helper se devuelva desde el método principal de ayuda:

class My_View_Helper_Gender extends Zend_View_Helper_Abstract { public function Gender() { return $this; } // … more code }

y luego llama $this->gender()->otherMethod()

Debido a que View Helpers contiene una referencia al objeto View, también puede llamar a cualquier View Helper disponible desde un View Helper , por ej.

public function Gender() { echo $this->view->translate(''gender''); // … more code }