Yii Framework Forum: [Resolvido] Variáveis De Template - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

[Resolvido] Variáveis De Template Rate Topic: -----

#1 User is offline   bmsrox 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 32
  • Joined: 03-August 11

Posted 25 February 2014 - 10:40 PM

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
0

#2 User is offline   bmsrox 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 32
  • Joined: 03-August 11

Posted 11 March 2014 - 01:48 PM

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
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users