2010-12-31 3 views
0

Je suis novice dans le domaine de Zend, et je veux créer une classe pour créer une table (plus pour apprendre à utiliser des aides, que pour des raisons pratiques).Utiliser View helpers dans Zend

J'ai créé une classe appelée Table dans les vues/aides et ont mis le code suivant dans:

class Zend_View_Helper_Table{ 

public function table(){ 
    } 

    public function helloWorld(){ 
     return "hello world"; 
    } 

} 

J'ai ajouté cette ligne:

resources.view.helperPath = APPLICATION_PATH "/views/helpers" 

Pour mon fichier ini.

Comment procéder pour instancier cette classe et l'utiliser dans mes vues?

j'ai suivi les scripts sur Zend, mais il échoue après ...

Vive John

Répondre

3

Votre classe doit étendre: Zend_View_Helper_Abstract

Mais je suggère d'utiliser votre propre espace de noms pour vos aides de vue:

Dans votre bootstrap.php ajouter:

/** 
* Initialize the autoloader 
* 
* @return Zend_Application_Module_Autoloader 
*/ 
protected function _initAutoload() 
{ 
    $autoloader = new Zend_Application_Module_Autoloader(array(
      'namespace' => 'My', 
      'basePath' => dirname(__FILE__), 
    )); 

    return $autoloader; 
} 

Dans votre application.ini ajouter:

resources.view.helperPath.My_View_Helper = APPLICATION_PATH "/views/helpers" 

Mettez votre aide en vue;

/views/helpers/Hello.php

class My_View_Helper_Hello extends Zend_View_Helper_Abstract 
{ 
    /** 
    * Return random quotes 
    * 
    * @return string quotes 
    */ 
    public function hello() 
    { 
     $quotes = array(
      'test12', 
      'fooBar', 
     ); 

     $idx = array_rand($quotes); 

     return $quotes[$idx]; 
    } 
} 

Et, selon vous, il suffit d'utiliser:

<?php echo $this->hello;?> 
+0

Qu'est-ce que je devrais écrire dans mon contrôleur pour instancier? – user505988

+0

rien;) son autoloadd – opHASnoNAME

+0

Hmm pour une raison quelconque, j'ai copié votre code exactement mais avec un tweak mineur aux noms, mais pas de joie. Savez-vous s'il peut y avoir quelque chose que je dois mettre ailleurs? – user505988

Questions connexes