Delphi 4 PHP – Smarty Templates

 

O D4PHP tem suporte nativo a Smarty Templates, que é um recurso muito interessante, que aumenta a produtividade ao mesmo tempo que ajuda a separar a lógica do design.

O problema que eu encontrei, é que a forma em que foi implementado, depende que o PHP esteja com variáveis globais habilitadas, como eu mantenho este recurso desabilitado, quando tentava usar Smarty Templates com D4PHP, sempre dava erro, e a mensagem de erro não ajudava muito.

Este erro só acontece se no PHP as variáveis globais estiverem desabilitadas.

Com uma dica do Jonathan Benedicto, fiz uma pequena alteração no arquivo “vcl/smartytemplate.inc.php”, para que o diretório temporário fosse carregado do ambiente e não da variável global “TMP”.

A alteração fica na function initialize(), eu comentei o código anterior e adicionei o novo, linha ~51:

function initialize(){
	require_once("smarty/libs/Smarty.class.php");
	$this->_smarty = new Smarty;
	$this->_smarty->left_delimiter='{%';
	$this->_smarty->right_delimiter='%}';
	$this->_smarty->template_dir = '';    

	if ( preg_match( "/^WIN/i", PHP_OS ) ){
/* 	// inicio do código comentado
		if ( isset( $_ENV['TMP'] ) ){
			$this->_smarty->compile_dir = $_ENV['TMP'];
		}
		elseif( isset( $_ENV['TEMP'] ) ){
			$this->_smarty->compile_dir = $_ENV['TEMP'];
		}
		else {
			$this->_smarty->compile_dir = '/tmp';
		}
	}
	else{
		$this->_smarty->compile_dir = '/tmp';
	}
*/ // fim do código comentado      

		if (getenv('TMP')){
			$this->_smarty->compile_dir = getenv( 'TMP' );
		}
		elseif(getenv('TEMP')){
			$this->_smarty->compile_dir = getenv( 'TEMP' );
		}
		else {
			$this->_smarty->compile_dir = '/tmp';
		}
	}
	$this->_smarty->cache_dir=$this->_smarty->compile_dir;
}

Referências

 
 
 

2 Comments

 
  1. Bruno disse:

    Como vai cesar?

    O erro que vc encontrou é semelhante ao abaixo?

    Foi no servidor web?

    Fatal error: Smarty error: the $compile_dir ‘/tmp’ does not exist, or is not a directory. in /home/a56576/public_html/rascunho/07/02/vcl/smarty/libs/Smarty.class.php on line 1092

    grato!

  2. Cesar disse:

    @Bruno:
    Sim foi este erro mesmo.

 

Leave a Comment

 




XHTML: You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>