2009-10-28 4 views
2

Je n'arrive pas à définir dynamiquement la variable $template d'un site construit sur Kohana.Définition dynamique du nom du modèle Kohana

Si je tends la classe Template_Controller, je peux définir le nom du modèle comme celui-ci:

public $template = 'template_file_name'; 

Mais je ne peux pas définir dynamiquement comme:

public $template = $this->setTemplate(); 

ou

switch($var): 
    default: 
     public $template = 'filename'; 
     break; 
endswitch; 

Modification de la variable $template en utilisant $this->template dans le constructeur brise le T emplate_Controller en quelque sorte:

Fatal error: Call to a member function render() on a non-object

Dois-je définir le nom du fichier de modèle basé sur un ensemble variable dans le constructeur, ou peut-être tiré d'une bibliothèque externe.

Des idées pour rendre cela possible?

+0

Je ne connais rien à Kohana, mais setTemplate() renvoie-t-il réellement une valeur? Aussi, vous devriez déclarer la variable après l'ouverture de la classe (mais en dehors du constructeur): 'public $ template;' et ensuite le définir dans le constructeur: '$ this-> template = 'template';'. –

+0

Hmm, ça devrait être possible ..! Qu'est-ce qui se passe quand vous essayez? J'utilise pour définir beaucoup de propriétés de cette façon, y compris les relations ORM. Jamais essayé avec le nom de temple ... – Cambiata

+0

Non, setTemplate ne renvoie pas de valeur - j'ai juste essayé de renvoyer une valeur dynamique ici à partir d'une fonction interne. La modification de la variable template $ à l'aide de $ this-> template dans le constructeur rompt le Template_Controller: Erreur fatale: appel à une fonction membre render() sur un non-objet – jmccartie

Répondre

5

je le fais comme ceci:

public function action_myaction() 
{ 
    // template 
    $this->template = "template/overlay"; 
    parent::before(); 

    // display 
    $this->template->title = 'My Action'; 
    $this->template->content = View::factory('myaction') 
} 

Plus d'informations ici: http://www.workinprogress.ca/kohana32/

+0

Thank! Ça marche ! – Winston

Questions connexes