<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>TecnoRetales &#187; Smarty</title>
	<atom:link href="http://www.tecnoretales.com/tag/smarty/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tecnoretales.com</link>
	<description>La experiencia no se olvida</description>
	<lastBuildDate>Wed, 07 Jul 2010 21:23:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<!-- google ad injected by adsense-optimizer http://www.adsenseoptimizer.de -->
			<div  style="padding:7px; float: right; padding-right: 0; margin: 3px;"><!-- Ad number: 1 --><script type="text/javascript"><!--
    	 
    	google_ad_client = "pub-7180773421652966"; google_alternate_color = "FFFFFF";
		google_ad_width = 468; google_ad_height = 60;
		google_ad_format = "468x60_as"; google_ad_type = "text";
		google_ad_channel =""; google_color_border = "FE8B00";
		google_color_link = "FE8B00"; google_color_bg = "FFFFFF";
		google_color_text = "000000"; google_color_url = "D9D9D9";
		google_ui_features = "rc:6"; //--></script>
		<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script></div>	<item>
		<title>Smarty3 y autoload</title>
		<link>http://www.tecnoretales.com/programacion/smarty3-y-autoload/</link>
		<comments>http://www.tecnoretales.com/programacion/smarty3-y-autoload/#comments</comments>
		<pubDate>Tue, 29 Jun 2010 07:41:32 +0000</pubDate>
		<dc:creator>Manel Pérez Mata</dc:creator>
				<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Smarty]]></category>

		<guid isPermaLink="false">http://www.tecnoretales.com/?p=741</guid>
		<description><![CDATA[
Uno de los errores comunes al implementar Smarty3 es:
Fatal error: Class &#8216;Smarty_Internal_Wrapper&#8217; not found
Fatal error: Class &#8216;Smarty_Internal_Register&#8217; not found
Fatal error: Class &#8216;Smarty_Internal_Template&#8217; not found
Estos se deban, probablemente, a que en tu aplicación estás utilizando la función __autoload también necesaria por Smarty3. La solución a este problema pasa por utilizar la función que PHP nos brinda [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p><img class="size-full wp-image-74 alignright" src="http://www.tecnoretales.com/wp-content/uploads/2009/05/logo_smarty.gif" alt="Smarty Logo" width="250" height="64" /></p>
<p>Uno de los errores comunes al <strong>implementar Smarty3</strong> es:</p>
<blockquote><p>Fatal error: Class &#8216;Smarty_Internal_Wrapper&#8217; not found</p>
<p>Fatal error: Class &#8216;Smarty_Internal_Register&#8217; not found</p>
<p>Fatal error: Class &#8216;Smarty_Internal_Template&#8217; not found</p></blockquote>
<p>Estos se deban, probablemente, a que en tu aplicación estás utilizando la función <strong>__autoload</strong> también necesaria por Smarty3. La solución a este problema pasa por utilizar la función que PHP nos brinda <strong>spl_autoload_register</strong>.</p>
<p>En una aplicación, sólo puede existir una llamada a la función __autload, sin embargo, con spl_autoload_register podemos añadir tantos manejadores como queramos y estos se irán ejecutando en el orden en el que los hayamos registrado.</p>
<p>Un ejemplo sencillo de su uso sería:</p>
<pre class="brush: php;">

class AutoloadHandler
{
	static public function launch( $classname )
	{
		print '[['. $name .']]';
	}
}

spl_autoload_register( 'AutoloadHandler::launch' );

new ThisClassNotExists();
</pre>
<p>El resultado de ejecutar este script sería algo así:</p>
<blockquote><p>[[ThisClassNotExists]]</p>
<p>Fatal error: Class &#8216;ThisClassNotExists&#8217; not found in &#8230;</p></blockquote>
<p>El cual nos indica que está llamando de manera correcta al autoload, pero al no estar implementado de manera correcta y no existir la clase &#8216;ThisClassNotExists&#8217; nos devuelve un error.</p>
<p>En definitiva, <strong>para solventar el problema</strong>, no será necesario que modifiques el código Smarty, pues este ya está utilizando de manera correcta spl_autoload_register, lo que debes hacer es <strong>sustituir tu __autoload</strong> por una clase con una función &#8216;launch&#8217; (llámala como quieras) y registrarla mediante:</p>
<pre class="brush: php;">
&amp;amp;lt;pre&amp;amp;gt;spl_autoload_register( 'MyAutoloadHandler::launch' );&amp;amp;lt;/pre&amp;amp;gt;
</pre>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://www.tecnoretales.com/programacion/smarty3-y-autoload/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configurar Smarty en Yii Framework</title>
		<link>http://www.tecnoretales.com/programacion/configurar-smarty-en-yii-framework/</link>
		<comments>http://www.tecnoretales.com/programacion/configurar-smarty-en-yii-framework/#comments</comments>
		<pubDate>Sat, 02 May 2009 07:03:00 +0000</pubDate>
		<dc:creator>Manel Pérez Mata</dc:creator>
				<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Smarty]]></category>
		<category><![CDATA[Yii]]></category>

		<guid isPermaLink="false">http://www.tecnoretales.com/?p=42</guid>
		<description><![CDATA[
Ayer os comentaba como instalar Yii desde 0. La necesidad de poder añadirle Smarty a este Framework, me hizo dar varias vueltas por Google para ver si alguien lo había resuelto, y después de un rato, llegué a la conclusión de que hasta la fecha, nadie lo había publicado en la red.
Así que, me puse [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p><a href="http://www.smarty.net/"><img class="size-full wp-image-74 alignleft" title="Smarty Logo" src="http://www.tecnoretales.com/wp-content/uploads/2009/05/logo_smarty.gif" alt="Smarty Logo" width="250" height="64" /></a></p>
<p>Ayer os comentaba como <a title="Instalar Yii desde 0" href="http://www.tecnoretales.com/programacion/instalar-yii-framework-desde-0/">instalar Yii desde 0</a>. La necesidad de poder añadirle Smarty a este Framework, me hizo dar varias vueltas por Google para ver si alguien lo había resuelto, y después de un rato, llegué a la conclusión de que hasta la fecha, nadie lo había publicado en la red.</p>
<p>Así que, me puse manos a la obra y generé esta pequeña extensión para poder utilizar este gestor de plantillas con Yii. El código creado es:<span id="more-42"></span></p>
<p><strong>CSmartyViewRenderer.php</strong></p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/**</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* CSmartyViewRenderer class file.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;*</span></div>
</li>
<li class="li2">
<div class="de2"><span class="coMULTI">&nbsp;* @author Manel Pérez</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* @license http://www.yiiframework.com/license/</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;*/</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/**</span></div>
</li>
<li class="li2">
<div class="de2"><span class="coMULTI">&nbsp;* CSmartyViewRenderer implements a view renderer that allows users to use a template syntax similar to SMARTY templates.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;*</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* To use CSmartyViewRenderer, configure it as an application component named &quot;viewRenderer&quot; in the application configuration /protected/config/main.php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* &lt;pre&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* array(</span></div>
</li>
<li class="li2">
<div class="de2"><span class="coMULTI">&nbsp;* &nbsp; &nbsp; &#8216;components&#8217;=&gt;array(</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* &nbsp; &nbsp; &nbsp; &nbsp; &#8230;&#8230;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* &nbsp; &nbsp; &nbsp; &nbsp; &#8216;viewRenderer&#8217;=&gt;array(</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#8216;class&#8217;=&gt;&#8217;CSmartyViewRenderer&#8217;,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* &nbsp; &nbsp; &nbsp; &nbsp; ),</span></div>
</li>
<li class="li2">
<div class="de2"><span class="coMULTI">&nbsp;* &nbsp; &nbsp; ),</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* )</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* &lt;/pre&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;*</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* @author Manel Pérez</span></div>
</li>
<li class="li2">
<div class="de2"><span class="coMULTI">&nbsp;* @version $Id: CSmartyViewRenderer.php 433 2009-03-16 22:59:17Z manel.perez $</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* @package system.web.renderers</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* @since 1.0</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;*/</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2"><span class="kw1">require_once</span> <span class="st0">&quot;Smarty/Smarty.class.php&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">class</span> CSmartyViewRenderer <span class="kw2">extends</span> CViewRenderer</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">private</span> <span class="re0">$_input</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="kw2">private</span> <span class="re0">$_output</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">private</span> <span class="re0">$_sourceFile</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">private</span> <span class="re0">$_smarty</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">function</span> __construct<span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;_smarty = <span class="kw2">new</span> Smarty<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="coMULTI">/**</span></div>
</li>
<li class="li2">
<div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* Parses the source view file and saves the results as another file.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* This method is required by the parent class.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* @param string the source view file path</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* @param string the resulting view file path</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;*/</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; protected <span class="kw2">function</span> generateViewFile<span class="br0">&#40;</span><span class="re0">$sourceFile</span>,<span class="re0">$viewFile</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;_output = <span class="re0">$this</span>-&gt;_smarty-&gt;<span class="me1">get</span><span class="br0">&#40;</span><span class="re0">$sourceFile</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; file_put_contents<span class="br0">&#40;</span><span class="re0">$viewFile</span>,<span class="re0">$this</span>-&gt;_output<span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="coMULTI">/**</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* Renders a view file.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* This method is required by {@link IViewRenderer}.</span></div>
</li>
<li class="li2">
<div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* @param CBaseController the controller or widget who is rendering the view file.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* @param string the view file path</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* @param mixed the data to be passed to the view</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* @param boolean whether the rendering result should be returned</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* @return mixed the rendering result, or null if the rendering result is not needed.</span></div>
</li>
<li class="li2">
<div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp;*/</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">public</span> <span class="kw2">function</span> renderFile<span class="br0">&#40;</span><span class="re0">$context</span>,<span class="re0">$sourceFile</span>,<span class="re0">$data</span>,<span class="re0">$return</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>!<a href="http://www.php.net/empty"><span class="kw3">empty</span></a><span class="br0">&#40;</span><span class="re0">$data</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/is_array"><span class="kw3">is_array</span></a><span class="br0">&#40;</span><span class="re0">$data</span><span class="br0">&#41;</span> || <a href="http://www.php.net/is_object"><span class="kw3">is_object</span></a><span class="br0">&#40;</span><span class="re0">$data</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">foreach</span><span class="br0">&#40;</span><span class="re0">$data</span> <span class="kw1">as</span> <span class="re0">$key</span>=&gt;<span class="re0">$value</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/is_array"><span class="kw3">is_array</span></a><span class="br0">&#40;</span><span class="re0">$value</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/is_a"><span class="kw3">is_a</span></a><span class="br0">&#40;</span><span class="re0">$value</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>, <span class="st0">&quot;CActiveRecord&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">foreach</span> <span class="br0">&#40;</span><span class="re0">$value</span> <span class="kw1">as</span> <span class="re0">$valKey</span>=&gt;<span class="re0">$valRec</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$att</span><span class="br0">&#91;</span><span class="br0">&#93;</span> = <span class="re0">$valRec</span>-&gt;<span class="me1">getAttributes</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;_smarty-&gt;<span class="me1">assign</span><span class="br0">&#40;</span><span class="re0">$key</span>, <span class="re0">$att</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;_smarty-&gt;<span class="me1">assign</span><span class="br0">&#40;</span><span class="re0">$key</span>, <span class="re0">$value</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;_smarty-&gt;<span class="me1">assign</span><span class="br0">&#40;</span><span class="re0">$key</span>, <span class="re0">$value</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//GENERIC Data assign</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;_smarty-&gt;<span class="me1">assign</span><span class="br0">&#40;</span><span class="st0">&quot;__DATA__&quot;</span>, <span class="re0">$data</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>!<a href="http://www.php.net/is_file"><span class="kw3">is_file</span></a><span class="br0">&#40;</span><span class="re0">$sourceFile</span><span class="br0">&#41;</span> || <span class="br0">&#40;</span><span class="re0">$file</span>=<a href="http://www.php.net/realpath"><span class="kw3">realpath</span></a><span class="br0">&#40;</span><span class="re0">$sourceFile</span><span class="br0">&#41;</span><span class="br0">&#41;</span>===<span class="kw2">false</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; throw <span class="kw2">new</span> CException<span class="br0">&#40;</span>Yii::<span class="me2">t</span><span class="br0">&#40;</span><span class="st0">&#8216;yii&#8217;</span>,<span class="st0">&#8216;View file &quot;{file}&quot; does not exist.&#8217;</span>,<a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st0">&#8216;{file}&#8217;</span>=&gt;<span class="re0">$sourceFile</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$viewFile</span>=<span class="re0">$this</span>-&gt;<span class="me1">getViewFile</span><span class="br0">&#40;</span><span class="re0">$sourceFile</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>@<a href="http://www.php.net/filemtime"><span class="kw3">filemtime</span></a><span class="br0">&#40;</span><span class="re0">$sourceFile</span><span class="br0">&#41;</span>&gt;@<a href="http://www.php.net/filemtime"><span class="kw3">filemtime</span></a><span class="br0">&#40;</span><span class="re0">$viewFile</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;<span class="me1">generateViewFile</span><span class="br0">&#40;</span><span class="re0">$sourceFile</span>,<span class="re0">$viewFile</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @<a href="http://www.php.net/chmod"><span class="kw3">chmod</span></a><span class="br0">&#40;</span><span class="re0">$viewFile</span>,<span class="re0">$this</span>-&gt;<span class="me1">filePermission</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="re0">$context</span>-&gt;<span class="me1">renderInternal</span><span class="br0">&#40;</span><span class="re0">$viewFile</span>,<span class="re0">$data</span>,<span class="re0">$return</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p>¿Cómo hacemos que este código funcione? Aquí os dejo los pasos para hacer que Smarty y Yii vayan de la mano hacia un mundo de color y alegría:</p>
<ol>
<li><strong>Descargamos</strong> el último código estable de la página oficial de <a href="http://www.smarty.net/download.php" target="blank">Smarty</a> y lo <strong>descomprimimos en la carpeta</strong> <em>/path/to/application/framework/web/renders/</em></li>
<li>Damos permisos 777 a la carpeta <em>/path/to/framework/framework/web/renders/Smarty/templates_c</em></li>
<li>Modificamos el fichero <em>/path/to/framework/[ApplicationName]/protected/config/main.php</em> añadiendo el siguiente código al array:
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="st0">&#8216;viewRenderer&#8217;</span>=&gt;array<span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;class&#8217;</span>=&gt;<span class="st0">&#8216;CSmartyViewRenderer&#8217;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#41;</span>,</div>
</li>
</ol>
</div>
</li>
<li>Por último, <strong>le diremos a Yii qual es el nuevo render</strong> modificando el archivo <em>/path/to/framework/framework/YiiBase.php</em>, buscamos &#8220;&#8216;CPradoViewRenderer&#8217;&#8221; y dejamos el código de la siguiente manera:
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="co1">//&#8217;CPradoViewRenderer&#8217; =&gt; &#8216;/web/renderers/CPradoViewRenderer.php&#8217;,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&#8216;CSmartyViewRenderer&#8217;</span> =&gt; <span class="st0">&#8216;/web/renderers/CSmartyViewRenderer.php&#8217;</span>,</div>
</li>
</ol>
</div>
</li>
</ol>
<p>Con esto, deberíamos tener funcionando Smarty en Yii&#8230; ahora nos queda modificar nuestros templates para que sigan la sintaxis propuesta por Smarty, y crear nuestros propios plugins que nos permitan interactuar con los helpers del framework.</p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://www.tecnoretales.com/programacion/configurar-smarty-en-yii-framework/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
