[Resolvido] Variáveis De Template

Achei essa classes de Template muito boa e gostaria e integrar no yii

Variáveis de Template

Alguém ja utilizou algo do tipo no yii? se sim qual a melhor forma de integrar?

Quero utilizar o esquema de temas do yii + essa classe de template, assim posso facilitar a integração de temas e o trabalho dos designers

Pessoal depois de fritar o cérebro, arrumei uma solução, não sei se é a mais correta, mas acho que atende o que eu preciso.

Quando utilizei o termo variáveis de template … queria fazer um esquema parecido com o SMARTY.

O que eu fiz: Alterei o método "render", nesse caso reescrevi o mesmo alterando apenas o retorno.

Esse é o método original que esta na CController dentro do Yii Framework:




public function render($view,$data=null,$return=false)

	{

		if($this->beforeRender($view))

		{

			$output=$this->renderPartial($view,$data,true);

			if(($layoutFile=$this->getLayoutFile($this->layout))!==false)

				$output=$this->renderFile($layoutFile,array('content'=>$output),true);


			$this->afterRender($view,$output);


			$output=$this->processOutput($output);


			if($return)

				return $output;

			else

				echo $output;

		}

	}



Fui em /protected/components/Controller.php criei uma variável pública chamada "template" sendo ela um array e reescrevi o método como esta abaixo:

Se já conhecem o Yii::t(), ele é utilizado para tradução de mensagens, utilizei para fazer o render das marcações no html o código do método render ficou assim




public function render($view,$data=null,$return=false)

	{

		if($this->beforeRender($view))

		{

			$output=$this->renderPartial($view,$data,true);

			if(($layoutFile=$this->getLayoutFile($this->layout))!==false)

				$output=$this->renderFile($layoutFile,array('content'=>$output),true);


			$this->afterRender($view,$output);


			$output=$this->processOutput($output);


			if($return)

				return Yii::t('template',$output, $this->template);

			else

				echo Yii::t('template',$output, $this->template);

		}

	}



O primeiro parâmetro do Yii::t() "template" é um parâmetro qualquer, não criei a pasta dentro do messages.

A variável $output eh a saída completa do html e onde contém minhas marcações. EX de marcação: {test}

E a $this->template é o array criado na /components/Controller.php

Criei um outro método na Controller.php chamado arrayTemplate




public function arrayTemplate($template = array())

	{

		return array_merge($this->template, $template);

	}



Quando passar




$tpl = array('{test}'=>'Exiba qualquer coisa');

$this->template = $this->arrayTemplate($tpl);



O método render irá substituir {test} pela string "Exiba qualquer coisa";

Eai Galera o que acham? aceito críticas e sugestões … rsrs

Espero ter ajudado!

Quem precisar não vai precisar quebrar a cabeça … rs

Vlw