<?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; Yii</title>
	<atom:link href="http://www.tecnoretales.com/tag/yii/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tecnoretales.com</link>
	<description>La experiencia no se olvida</description>
	<lastBuildDate>Mon, 13 Sep 2010 21:37:21 +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>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>
		<item>
		<title>Instalar Yii FrameWork desde 0</title>
		<link>http://www.tecnoretales.com/programacion/instalar-yii-framework-desde-0/</link>
		<comments>http://www.tecnoretales.com/programacion/instalar-yii-framework-desde-0/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 18:17:12 +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[Yii]]></category>

		<guid isPermaLink="false">http://www.tecnoretales.com/?p=24</guid>
		<description><![CDATA[La casualidad a querido que me vea analizando diferentes frameworks PHP con los cuales poder montar una aplicación. De todos los que he visto, creo que son interesantes cakePHP, Zend y el que está copando este pequeño artículo Yii.
Me llamó poderosamente la atención, el número de peticiones por segundo que Yii es capaz de procesar, [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p><a href="http://www.yiiframework.com/"><img class="alignleft size-full wp-image-77" title="Yii Logo" src="http://www.tecnoretales.com/wp-content/uploads/2009/04/logo1.gif" alt="Yii Logo" width="53" height="53" /></a>La casualidad a querido que me vea analizando diferentes frameworks PHP con los cuales poder montar una aplicación. De todos los que he visto, creo que son<strong> interesantes <a title="CakePhp" href="http://cakephp.org/" target="_blank">cakePHP</a>, <a title="Zend Framework" href="http://framework.zend.com/" target="_blank">Zend</a></strong> y el que está copando este pequeño artículo <strong><a title="Yii Framework" href="http://www.yiiframework.com/" target="_blank">Yii</a></strong>.</p>
<p>Me llamó poderosamente la atención, el número de peticiones por segundo que Yii es capaz de procesar, claro que, estos datos son facilitados por la propia web del framework, con lo qual, nos lo podemos creer, o no <img src='http://www.tecnoretales.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Os dejo una gráfica para que juzgueis vosotros mismos:</p>
<div id="attachment_27" class="wp-caption aligncenter" style="width: 560px"><a href="http://www.tecnoretales.com/wp-content/uploads/2009/04/performance-20090131.png" target="_blank"><img class="size-full wp-image-27" title="performance-20090131" src="http://www.tecnoretales.com/wp-content/uploads/2009/04/performance-20090131.png" alt="Performance Comparison Among PHP Frameworks" width="550" /></a><p class="wp-caption-text">Performance Comparison Among PHP Frameworks</p></div>
<p><span id="more-24"></span>Veamos como instalar este framework y como <strong>generar con él código a partir de nuestra base de datos</strong> sin necesidad de picar una sóla línea:</p>
<ol>
<li>Nos <strong>descargamos el <a title="Yii Download Page" href="http://www.yiiframework.com/download/" target="_blank">código de yii</a></strong> de la página oficial, en mi caso, he instalado la versión estable 1.0.3.</li>
<li><strong>Descomprimimos la carpeta</strong> framework en una ruta accesible desde nuestro navegador, por ejemplo, /var/www/yiiTest/ (a partir de ahora supondremos que se ha descomprimido en esta carpeta)</li>
<li>Ahora nos situamos en el directorio en el que hemos descomprimido el framework y crearemos nuestra aplicación de la siguiente manera:
<pre>user@pc:/var/www/yiiTest$ framework/yiic webapp [ApplicationName]</pre>
<p>Si todo ha ido bien, nos habrá creado una carpeta [ApplicationName] con una serie de carpetas y archivos en su interior (assets, css, protected&#8230;)</li>
<li>Llegados a este punto, podemos indicarle los datos de <strong>conexión a la base de datos</strong> modificando el archivo <em>/var/www/yiiTest/[ApplicationName]/protected/config/main.php</em>. Buscamos la línea que contiene:
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="co1">// uncomment the following to set up database</span></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; &#8216;db&#8217;=&gt;array(</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &#8216;connectionString&#8217;=&gt;&#8217;Your DSN&#8217;,</span></div>
</li>
<li class="li2">
<div class="de2"><span class="coMULTI">&nbsp; &nbsp; ),</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; */</span></div>
</li>
</ol>
</div>
<p>y la modificamos por:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="st0">&#8216;db&#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;connectionString&#8217;</span>=&gt;<span class="st0">&#8216;mysql:host=localhost;dbname=[DbName]&#8216;</span>,<span class="st0">&#8216;username&#8217;</span>=&gt;<span class="st0">&#8216;[DbUser]&#8216;</span>, <span class="st0">&#8216;password&#8217;</span>=&gt;<span class="st0">&#8216;[DbPassord]&#8216;</span>, <span class="st0">&#8216;charset&#8217;</span>=&gt;<span class="st0">&#8216;[DbCharset]&#8216;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span>,</div>
</li>
</ol>
</div>
<p>Sustituyendo la información entre corchetes por la de nuestra base de datos.</li>
<li>Y ahora llega la parte interesante. <strong>Crearemos código de manera automática</strong> a partir de las tablas que tenemos en nuestra base de datos.<br />
Supongamos que tenemos una tabla <em>user</em> y que queremos generar de una manera sencilla el código CRUD (Create, Read, Update y Delete) de dicha tabla. Esto sería tan siemple como hacer:</p>
<pre>user@pc:/var/www/yiiTest/[ApplicationName]$ protected/yiic shell</pre>
<p>Entraremos en el modo consola de Yii y desde aquí escribiremos:</p>
<pre>&gt;&gt; model user</pre>
<p>Para generar el <em>model</em> de dicha tabla y:</p>
<pre>&gt;&gt; crud user</pre>
<p>Para generar el <em>controller</em>.</li>
</ol>
<p>Una vez hecho esto, puedes ver el código generado en las carpetas <em>/var/www/yiiTest/[ApplicationName]/protected/controllers</em> y en <em>/var/www/yiiTest/[ApplicationName]/protected/models</em>.</p>
<p>Se fini! Ahora sólo queda jugar y probar con Yii a ver si se adapta a las necesidades de lo que queramos hacer.</p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://www.tecnoretales.com/programacion/instalar-yii-framework-desde-0/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

