<?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>Joaquín Nuñez &#187; symfony</title>
	<atom:link href="http://joaquinnunez.cl/blog/category/symfony/feed/" rel="self" type="application/rss+xml" />
	<link>http://joaquinnunez.cl/blog</link>
	<description>web2.0, symfony, jquery, javascript, php, web, develpment</description>
	<lastBuildDate>Thu, 06 Oct 2011 19:44:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Generador de pruebas para modulos symfony</title>
		<link>http://joaquinnunez.cl/blog/2010/09/27/generador-de-pruebas-para-modulos-symfony/</link>
		<comments>http://joaquinnunez.cl/blog/2010/09/27/generador-de-pruebas-para-modulos-symfony/#comments</comments>
		<pubDate>Mon, 27 Sep 2010 21:15:12 +0000</pubDate>
		<dc:creator>Joaquín Núñez</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[generador]]></category>
		<category><![CDATA[generate]]></category>
		<category><![CDATA[generator]]></category>
		<category><![CDATA[lime]]></category>
		<category><![CDATA[module]]></category>
		<category><![CDATA[modulos]]></category>
		<category><![CDATA[plantilla]]></category>
		<category><![CDATA[propel]]></category>
		<category><![CDATA[pruebas]]></category>
		<category><![CDATA[sh]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[template]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://joaquinnunez.cl/blog/?p=680</guid>
		<description><![CDATA[Si hay algo que años atrás me hizo decidirme por symfony como framework principal para trabajar, eso fue sus generadores. No voy a hablar mucho de ellos, eso da para un post muy largo seguramente encontrarán información al respecto en otros lugares. En este articulo quería compartir con Ud. una plantilla que utilizo para poder [...]]]></description>
			<content:encoded><![CDATA[<p>Si hay algo que años atrás me hizo decidirme por symfony como framework principal para trabajar, eso fue sus generadores. No voy a hablar mucho de ellos, eso da para un post muy largo seguramente encontrarán información al respecto en otros lugares.</p>
<p>En este articulo quería compartir con Ud. una plantilla que utilizo para poder generar pruebas para los modulos generados con el comando <span style="font-family:monospace;;">propel:generate-module</span>. Son un conjunto de pruebas básicas, (nada excepcional) hechas para testear lo básico de los modulos generados que por alguna razón sólo tienen una prueba.</p>
<p>Si bien me gustaría que detectará sólo los campos de los formularios, que validara más cosas, etc. Esto es un buen punto de partida para empezar a escribir tus pruebas.</p>
<p>Se logra con un archivo .sh llamado desde la terminal y un archivo .php con la plantilla de las pruebas. Para mayor información lea el código del comando.</p>
<p>Saludos.</p>
<h3>Usage example</h3>
<pre>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;">$ .<span class="sy0">/</span>your-sh-file.sh blog Blog BlogProject</div>
</div>
</pre>
<h3>Bash file</h3>
<pre>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;"><span class="co0">#!/bin/bash</span>

<span class="co0"># first parameter MODULE_NAME</span>
<span class="co0"># second parameter MODEL_CLASS</span>
<span class="co0"># symfony project name</span>

<span class="kw2">cat</span> symfony<span class="sy0">/</span>actionTest.php <span class="sy0">|</span> <span class="kw2">sed</span> <span class="st0">&quot;s/##MODULE_NAME##/$1/&quot;</span> <span class="sy0">|</span> <span class="kw2">sed</span> <span class="st0">&quot;s/##MODEL_CLASS##/$2/&quot;</span> <span class="sy0">&gt;</span> $<span class="nu0">3</span><span class="sy0">/</span>test<span class="sy0">/</span>functional<span class="sy0">/</span>frontend<span class="sy0">/</span>$1ActionsTest.php</div>
</div>
</pre>
<h3>actionTest.php</h3>
<pre>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;"><span class="kw2">&lt;?php</span>

<span class="kw1">include</span><span class="br0">&#40;</span><a href="http://www.php.net/dirname"><span class="kw3">dirname</span></a><span class="br0">&#40;</span><span class="kw4">__FILE__</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="st_h">'/../../bootstrap/functional.php'</span><span class="br0">&#41;</span><span class="sy0">;</span>

<span class="re0">$browser</span> <span class="sy0">=</span> <span class="kw2">new</span> sfTestFunctional<span class="br0">&#40;</span><span class="kw2">new</span> sfBrowser<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>

<span class="re0">$browser</span><span class="sy0">-&gt;</span>
&nbsp; <span class="me1">info</span><span class="br0">&#40;</span><span class="st_h">'##MODEL_CLASS##s Tests'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; <span class="me1">info</span><span class="br0">&#40;</span><span class="st_h">' &nbsp;1.0 Index'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; <span class="me1">get</span><span class="br0">&#40;</span><span class="st_h">'/##MODULE_NAME##/index'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>

&nbsp; <span class="me1">with</span><span class="br0">&#40;</span><span class="st_h">'request'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">begin</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">isParameter</span><span class="br0">&#40;</span><span class="st_h">'module'</span><span class="sy0">,</span> <span class="st_h">'##MODULE_NAME##'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">isParameter</span><span class="br0">&#40;</span><span class="st_h">'action'</span><span class="sy0">,</span> <span class="st_h">'index'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; <a href="http://www.php.net/end"><span class="kw3">end</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>

&nbsp; <span class="me1">with</span><span class="br0">&#40;</span><span class="st_h">'response'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">begin</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">isStatusCode</span><span class="br0">&#40;</span><span class="nu0">200</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">checkElement</span><span class="br0">&#40;</span><span class="st_h">'h1:contains(&quot;##MODEL_CLASS##s List&quot;)'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">checkElement</span><span class="br0">&#40;</span><span class="st_h">'a:contains(&quot;New&quot;)'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; <a href="http://www.php.net/end"><span class="kw3">end</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span>
<span class="sy0">;</span>

<span class="re0">$browser</span><span class="sy0">-&gt;</span>
&nbsp; <span class="me1">info</span><span class="br0">&#40;</span><span class="st_h">' &nbsp;1.1 New &amp; Create'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; <span class="me1">click</span><span class="br0">&#40;</span><span class="st_h">'New'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>

&nbsp; <span class="me1">with</span><span class="br0">&#40;</span><span class="st_h">'request'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">begin</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">isParameter</span><span class="br0">&#40;</span><span class="st_h">'module'</span><span class="sy0">,</span> <span class="st_h">'##MODULE_NAME##'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">isParameter</span><span class="br0">&#40;</span><span class="st_h">'action'</span><span class="sy0">,</span> <span class="st_h">'new'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; <a href="http://www.php.net/end"><span class="kw3">end</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>

&nbsp; <span class="me1">with</span><span class="br0">&#40;</span><span class="st_h">'response'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">begin</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">isStatusCode</span><span class="br0">&#40;</span><span class="nu0">200</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">checkElement</span><span class="br0">&#40;</span><span class="st_h">'h1:contains(&quot;New ##MODEL_CLASS##&quot;)'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">checkElement</span><span class="br0">&#40;</span><span class="st_h">'a:contains(&quot;Back to list&quot;)'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; <a href="http://www.php.net/end"><span class="kw3">end</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>

&nbsp; <span class="co1">// TODO your wrong data should be here</span>
&nbsp; click<span class="br0">&#40;</span><span class="st_h">'Save'</span><span class="sy0">,</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st_h">'##MODULE_NAME##'</span> <span class="sy0">=&gt;</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span>
&nbsp; &nbsp; <span class="st_h">'your-field'</span> &nbsp; &nbsp;<span class="sy0">=&gt;</span> <span class="st_h">'your-wrong-data'</span><span class="sy0">,</span>
&nbsp; &nbsp; <span class="st_h">'another-field'</span> <span class="sy0">=&gt;</span> <span class="st_h">'another-wrong-data'</span><span class="sy0">,</span>
&nbsp; <span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>

&nbsp; <span class="me1">with</span><span class="br0">&#40;</span><span class="st_h">'form'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">begin</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">hasErrors</span><span class="br0">&#40;</span><span class="nu0">2</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="co1">// TODO any other check?</span>
&nbsp; <a href="http://www.php.net/end"><span class="kw3">end</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; 
&nbsp; <span class="co1">// TODO put your correct data here</span>
&nbsp; click<span class="br0">&#40;</span><span class="st_h">'Save'</span><span class="sy0">,</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st_h">'##MODULE_NAME##'</span> <span class="sy0">=&gt;</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span>
&nbsp; &nbsp; <span class="st_h">'your-field'</span> &nbsp; &nbsp;<span class="sy0">=&gt;</span> <span class="st_h">'your-data'</span><span class="sy0">,</span>
&nbsp; &nbsp; <span class="st_h">'another-field'</span> <span class="sy0">=&gt;</span> <span class="st_h">'another-data'</span><span class="sy0">,</span>
&nbsp; <span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>

&nbsp; <span class="me1">with</span><span class="br0">&#40;</span><span class="st_h">'form'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">begin</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">hasErrors</span><span class="br0">&#40;</span><span class="kw4">false</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="co1">// TODO any other check?</span>
&nbsp; <a href="http://www.php.net/end"><span class="kw3">end</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>

&nbsp; <span class="me1">with</span><span class="br0">&#40;</span><span class="st_h">'request'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">begin</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">isParameter</span><span class="br0">&#40;</span><span class="st_h">'module'</span><span class="sy0">,</span> <span class="st_h">'##MODULE_NAME##'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">isParameter</span><span class="br0">&#40;</span><span class="st_h">'action'</span><span class="sy0">,</span> <span class="st_h">'create'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; <a href="http://www.php.net/end"><span class="kw3">end</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>

&nbsp; <span class="me1">with</span><span class="br0">&#40;</span><span class="st_h">'response'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">isRedirected</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">followRedirect</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>

&nbsp; <span class="me1">with</span><span class="br0">&#40;</span><span class="st_h">'request'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">begin</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">isParameter</span><span class="br0">&#40;</span><span class="st_h">'module'</span><span class="sy0">,</span> <span class="st_h">'##MODULE_NAME##'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">isParameter</span><span class="br0">&#40;</span><span class="st_h">'action'</span><span class="sy0">,</span> <span class="st_h">'edit'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; <a href="http://www.php.net/end"><span class="kw3">end</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>

&nbsp; <span class="me1">with</span><span class="br0">&#40;</span><span class="st_h">'response'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">begin</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">checkElement</span><span class="br0">&#40;</span><span class="st_h">'h1:contains(&quot;Edit ##MODEL_CLASS##&quot;)'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">checkElement</span><span class="br0">&#40;</span><span class="st_h">'a:contains(&quot;Back to list&quot;)'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">checkElement</span><span class="br0">&#40;</span><span class="st_h">'a:contains(&quot;Delete&quot;)'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; <a href="http://www.php.net/end"><span class="kw3">end</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span>
<span class="sy0">;</span>

<span class="co1">// XXX if you didnt use --with-show option, sorry for this :-)</span>
<span class="re0">$browser</span><span class="sy0">-&gt;</span>
&nbsp; <span class="me1">info</span><span class="br0">&#40;</span><span class="st_h">' &nbsp;1.2 List &amp; Show'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; <span class="me1">click</span><span class="br0">&#40;</span><span class="st_h">'Back to list'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>

&nbsp; <span class="me1">with</span><span class="br0">&#40;</span><span class="st_h">'request'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">begin</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">isParameter</span><span class="br0">&#40;</span><span class="st_h">'module'</span><span class="sy0">,</span> <span class="st_h">'##MODULE_NAME##'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">isParameter</span><span class="br0">&#40;</span><span class="st_h">'action'</span><span class="sy0">,</span> <span class="st_h">'index'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; <a href="http://www.php.net/end"><span class="kw3">end</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>

&nbsp; <span class="me1">with</span><span class="br0">&#40;</span><span class="st_h">'response'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">begin</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">isStatusCode</span><span class="br0">&#40;</span><span class="nu0">200</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">checkElement</span><span class="br0">&#40;</span><span class="st_h">'h1:contains(&quot;##MODEL_CLASS##s List&quot;)'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">checkElement</span><span class="br0">&#40;</span><span class="st_h">'a:contains(&quot;New&quot;)'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">checkElement</span><span class="br0">&#40;</span><span class="st_h">'table tbody tr td a'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; <a href="http://www.php.net/end"><span class="kw3">end</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>

&nbsp; <span class="co1">// XXX clicking the ##MODEL_CLASS## id</span>
&nbsp; click<span class="br0">&#40;</span><span class="st_h">'1'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>

&nbsp; <span class="me1">with</span><span class="br0">&#40;</span><span class="st_h">'request'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">begin</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">isParameter</span><span class="br0">&#40;</span><span class="st_h">'module'</span><span class="sy0">,</span> <span class="st_h">'##MODULE_NAME##'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">isParameter</span><span class="br0">&#40;</span><span class="st_h">'action'</span><span class="sy0">,</span> <span class="st_h">'show'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; <a href="http://www.php.net/end"><span class="kw3">end</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>

&nbsp; <span class="me1">with</span><span class="br0">&#40;</span><span class="st_h">'response'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">begin</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">isStatusCode</span><span class="br0">&#40;</span><span class="nu0">200</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">checkElement</span><span class="br0">&#40;</span><span class="st_h">'a:contains(&quot;Back to list&quot;)'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">checkElement</span><span class="br0">&#40;</span><span class="st_h">'a:contains(&quot;Edit&quot;)'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; <a href="http://www.php.net/end"><span class="kw3">end</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>

&nbsp; <span class="co1">// for our next set of test</span>
&nbsp; click<span class="br0">&#40;</span><span class="st_h">'Edit'</span><span class="br0">&#41;</span>
<span class="sy0">;</span>

<span class="re0">$browser</span><span class="sy0">-&gt;</span>
&nbsp; <span class="me1">info</span><span class="br0">&#40;</span><span class="st_h">' &nbsp;1.3 Edit &amp; Update'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>

&nbsp; <span class="co1">// TODO again? maybe, your wrong data should be here &quot;if you want&quot;</span>
&nbsp; click<span class="br0">&#40;</span><span class="st_h">'Save'</span><span class="sy0">,</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st_h">'##MODULE_NAME##'</span> <span class="sy0">=&gt;</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span>
&nbsp; &nbsp; <span class="st_h">'your-field'</span> &nbsp; &nbsp;<span class="sy0">=&gt;</span> <span class="st_h">'your-wrong-data'</span><span class="sy0">,</span>
&nbsp; &nbsp; <span class="st_h">'another-field'</span> <span class="sy0">=&gt;</span> <span class="st_h">'another-wrong-data'</span><span class="sy0">,</span>
&nbsp; <span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>

&nbsp; <span class="me1">with</span><span class="br0">&#40;</span><span class="st_h">'form'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">begin</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">hasErrors</span><span class="br0">&#40;</span><span class="nu0">2</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="co1">// TODO any other check?</span>
&nbsp; <a href="http://www.php.net/end"><span class="kw3">end</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; 
&nbsp; <span class="co1">// TODO put your correct data here</span>
&nbsp; click<span class="br0">&#40;</span><span class="st_h">'Save'</span><span class="sy0">,</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st_h">'##MODULE_NAME##'</span> <span class="sy0">=&gt;</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span>
&nbsp; &nbsp; <span class="st_h">'your-field'</span> &nbsp; &nbsp;<span class="sy0">=&gt;</span> <span class="st_h">'your-data'</span><span class="sy0">,</span>
&nbsp; &nbsp; <span class="st_h">'another-field'</span> <span class="sy0">=&gt;</span> <span class="st_h">'another-data'</span><span class="sy0">,</span>
&nbsp; <span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>

&nbsp; <span class="me1">with</span><span class="br0">&#40;</span><span class="st_h">'form'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">begin</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">hasErrors</span><span class="br0">&#40;</span><span class="kw4">false</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="co1">// TODO any other check?</span>
&nbsp; <a href="http://www.php.net/end"><span class="kw3">end</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>

&nbsp; <span class="me1">with</span><span class="br0">&#40;</span><span class="st_h">'request'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">begin</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">isParameter</span><span class="br0">&#40;</span><span class="st_h">'module'</span><span class="sy0">,</span> <span class="st_h">'##MODULE_NAME##'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">isParameter</span><span class="br0">&#40;</span><span class="st_h">'action'</span><span class="sy0">,</span> <span class="st_h">'update'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; <a href="http://www.php.net/end"><span class="kw3">end</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>

&nbsp; <span class="me1">with</span><span class="br0">&#40;</span><span class="st_h">'response'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">isRedirected</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">followRedirect</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>

&nbsp; <span class="me1">with</span><span class="br0">&#40;</span><span class="st_h">'request'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">begin</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">isParameter</span><span class="br0">&#40;</span><span class="st_h">'module'</span><span class="sy0">,</span> <span class="st_h">'##MODULE_NAME##'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">isParameter</span><span class="br0">&#40;</span><span class="st_h">'action'</span><span class="sy0">,</span> <span class="st_h">'edit'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; <a href="http://www.php.net/end"><span class="kw3">end</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>

&nbsp; <span class="me1">with</span><span class="br0">&#40;</span><span class="st_h">'response'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">begin</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">checkElement</span><span class="br0">&#40;</span><span class="st_h">'h1:contains(&quot;Edit ##MODEL_CLASS##&quot;)'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">checkElement</span><span class="br0">&#40;</span><span class="st_h">'a:contains(&quot;Back to list&quot;)'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">checkElement</span><span class="br0">&#40;</span><span class="st_h">'a:contains(&quot;Delete&quot;)'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; <a href="http://www.php.net/end"><span class="kw3">end</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span>
<span class="sy0">;</span>

<span class="re0">$browser</span><span class="sy0">-&gt;</span>
&nbsp; <span class="me1">info</span><span class="br0">&#40;</span><span class="st_h">' &nbsp;1.4 Delete'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; 
&nbsp; <span class="me1">click</span><span class="br0">&#40;</span><span class="st_h">'Delete'</span><span class="sy0">,</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">,</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st_h">'method'</span> <span class="sy0">=&gt;</span> <span class="st_h">'delete'</span><span class="sy0">,</span> <span class="st_h">'_with_csrf'</span> <span class="sy0">=&gt;</span> <span class="kw4">true</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>

&nbsp; <span class="me1">with</span><span class="br0">&#40;</span><span class="st_h">'request'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">begin</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">isParameter</span><span class="br0">&#40;</span><span class="st_h">'module'</span><span class="sy0">,</span> <span class="st_h">'##MODULE_NAME##'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">isParameter</span><span class="br0">&#40;</span><span class="st_h">'action'</span><span class="sy0">,</span> <span class="st_h">'delete'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">isMethod</span><span class="br0">&#40;</span><span class="st_h">'delete'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; <a href="http://www.php.net/end"><span class="kw3">end</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>

&nbsp; <span class="me1">with</span><span class="br0">&#40;</span><span class="st_h">'response'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">begin</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">isStatusCode</span><span class="br0">&#40;</span>302<span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; <a href="http://www.php.net/end"><span class="kw3">end</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; 
&nbsp; <span class="me1">with</span><span class="br0">&#40;</span><span class="st_h">'response'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">isRedirected</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">followRedirect</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>

&nbsp; <span class="me1">with</span><span class="br0">&#40;</span><span class="st_h">'request'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">begin</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">isParameter</span><span class="br0">&#40;</span><span class="st_h">'module'</span><span class="sy0">,</span> <span class="st_h">'##MODULE_NAME##'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">isParameter</span><span class="br0">&#40;</span><span class="st_h">'action'</span><span class="sy0">,</span> <span class="st_h">'index'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; <a href="http://www.php.net/end"><span class="kw3">end</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>

&nbsp; <span class="me1">with</span><span class="br0">&#40;</span><span class="st_h">'response'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">begin</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">checkElement</span><span class="br0">&#40;</span><span class="st_h">'h1:contains(&quot;##MODEL_CLASS##s List&quot;)'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; &nbsp; <span class="me1">checkElement</span><span class="br0">&#40;</span><span class="st_h">'a:contains(&quot;New&quot;)'</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span>
&nbsp; <a href="http://www.php.net/end"><span class="kw3">end</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span>
<span class="sy0">;</span></div>
</div>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://joaquinnunez.cl/blog/2010/09/27/generador-de-pruebas-para-modulos-symfony/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Validar formato de patentes de autos en Chile con expresiones regulares</title>
		<link>http://joaquinnunez.cl/blog/2010/09/10/validar-formato-de-patentes-de-autos-en-chile-con-expresiones-regulares/</link>
		<comments>http://joaquinnunez.cl/blog/2010/09/10/validar-formato-de-patentes-de-autos-en-chile-con-expresiones-regulares/#comments</comments>
		<pubDate>Fri, 10 Sep 2010 13:08:40 +0000</pubDate>
		<dc:creator>Joaquín Núñez</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[auto]]></category>
		<category><![CDATA[autos]]></category>
		<category><![CDATA[chile]]></category>
		<category><![CDATA[chilena]]></category>
		<category><![CDATA[expresion regular]]></category>
		<category><![CDATA[expresiones regulares]]></category>
		<category><![CDATA[formato]]></category>
		<category><![CDATA[patente]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[regex]]></category>
		<category><![CDATA[sfValidatorPatente]]></category>
		<category><![CDATA[validacion]]></category>
		<category><![CDATA[validar]]></category>
		<category><![CDATA[validation]]></category>
		<category><![CDATA[validator]]></category>

		<guid isPermaLink="false">http://joaquinnunez.cl/blog/?p=616</guid>
		<description><![CDATA[El validador de symfony y de jquery validate esta disponible dentro de este post.

[code lang="php"]
$patente = 'AB-12-34';
$regex = '/^[a-z]{2}[\.\- ]?[0-9]{2}[\.\- ]?[0-9]{2}&#124;[b-d,f-h,j-l,p,r-t,v-z]{2}[\-\. ]?[b-d,f-h,j-l,p,r-t,v-z]{2}[\.\- ]?[0-9]{2}$/i';
if (preg_match($regex, $patente))
  echo "Patente correcta";
else
  echo "Patente incorrecta";
[/code]

Saludos]]></description>
			<content:encoded><![CDATA[<p>Esta expresión regular valida el formato antiguo y el nuevo de la patente de autos en Chile, ojo, sólo valida el formato. Usé como separador los caracteres . (punto), &#8211; (guión) ó un espacio.</p>
<h3>Expresión regular</h3>
<pre>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;"><span class="re0">$patente</span> <span class="sy0">=</span> <span class="st_h">'AB-12-34'</span><span class="sy0">;</span>
<span class="re0">$regex</span> <span class="sy0">=</span> <span class="st_h">'/^[a-z]{2}[\.\- ]?[0-9]{2}[\.\- ]?[0-9]{2}|[b-d,f-h,j-l,p,r-t,v-z]{2}[\-\. ]?[b-d,f-h,j-l,p,r-t,v-z]{2}[\.\- ]?[0-9]{2}$/i'</span><span class="sy0">;</span>
<span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/preg_match"><span class="kw3">preg_match</span></a><span class="br0">&#40;</span><span class="re0">$regex</span><span class="sy0">,</span> <span class="re0">$patente</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
&nbsp; <span class="kw1">echo</span> <span class="st0">&quot;Patente correcta&quot;</span><span class="sy0">;</span>
<span class="kw1">else</span>
&nbsp; <span class="kw1">echo</span> <span class="st0">&quot;Patente incorrecta&quot;</span><span class="sy0">;</span></div>
</div>
</pre>
<hr />
<h3>Método para jQuery plugin Validation</h3>
<pre>
<div class="codesnip-container" >
<div class="javascript codesnip" style="font-family:monospace;">$.<span class="me1">validator</span>.<span class="me1">addMethod</span><span class="br0">&#40;</span><span class="st0">&quot;patente&quot;</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>value<span class="sy0">,</span> element<span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp; <span class="kw1">return</span> <span class="kw1">this</span>.<span class="me1">optional</span><span class="br0">&#40;</span>element<span class="br0">&#41;</span> <span class="sy0">||</span> value.<span class="me1">match</span><span class="br0">&#40;</span><span class="co2">/^[a-z]{2}[\.\- ]?[0-9]{2}[\.\- ]?[0-9]{2}|[b-d,f-h,j-l,p,r-t,v-z]{2}[\-\. ]?[b-d,f-h,j-l,p,r-t,v-z]{2}[\.\- ]?[0-9]{2}$/i</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span><span class="sy0">,</span> <span class="st0">&quot;La patente ingresada no es valida.&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</div>
</pre>
<hr />
<h3>Validador patente symfony</h3>
<pre>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;"><span class="kw2">&lt;?php</span>

<span class="coMULTI">/* 
&nbsp;* Copyright (c) 2010 José Joaquín Núñez (josejnv@gmail.com) http://joaquinnunez.cl/ &nbsp;
&nbsp;* Licensed under GPL (http://www.opensource.org/licenses/gpl-2.0.php)
&nbsp;* Use only for non-commercial usage.
&nbsp;*
&nbsp;* Version : 0.1
*/</span>

<span class="co4">/**
&nbsp;* sfValidatorPatente validates patentes chilenas.
&nbsp;*
&nbsp;* @package &nbsp; &nbsp;symfony
&nbsp;* @subpackage validator
&nbsp;* @author &nbsp; &nbsp; José Joaquín Núñez &lt;josejnv@gmail.com&gt;
&nbsp;*/</span>

<span class="kw2">class</span> sfValidatorPatente <span class="kw2">extends</span> sfValidatorRegex
<span class="br0">&#123;</span>
&nbsp; <span class="kw2">const</span> REGEX_PATENTE <span class="sy0">=</span> <span class="st_h">'/^[a-z]{2}[\.\- ]?[0-9]{2}[\.\- ]?[0-9]{2}|[b-d,f-h,j-l,p,r-t,v-z]{2}[\-\. ]?[b-d,f-h,j-l,p,r-t,v-z]{2}[\.\- ]?[0-9]{2}$/i'</span><span class="sy0">;</span>

&nbsp; <span class="co4">/**
&nbsp; &nbsp;* @see sfValidatorRegex
&nbsp; &nbsp;*/</span>
&nbsp; protected <span class="kw2">function</span> configure<span class="br0">&#40;</span><span class="re0">$options</span> <span class="sy0">=</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">,</span> <span class="re0">$messages</span> <span class="sy0">=</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
&nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; parent<span class="sy0">::</span><span class="me2">configure</span><span class="br0">&#40;</span><span class="re0">$options</span><span class="sy0">,</span> <span class="re0">$messages</span><span class="br0">&#41;</span><span class="sy0">;</span>

&nbsp; &nbsp; <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">setOption</span><span class="br0">&#40;</span><span class="st_h">'pattern'</span><span class="sy0">,</span> <span class="kw2">self</span><span class="sy0">::</span><span class="me2">REGEX_PATENTE</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; <span class="br0">&#125;</span>
<span class="br0">&#125;</span></div>
</div>
</pre>
<p>Saludos</p>
]]></content:encoded>
			<wfw:commentRss>http://joaquinnunez.cl/blog/2010/09/10/validar-formato-de-patentes-de-autos-en-chile-con-expresiones-regulares/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>sfWidgetFormChoiceChileanBanks</title>
		<link>http://joaquinnunez.cl/blog/2010/07/26/sfwidgetformchoicechileanbanks/</link>
		<comments>http://joaquinnunez.cl/blog/2010/07/26/sfwidgetformchoicechileanbanks/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 15:26:25 +0000</pubDate>
		<dc:creator>Joaquín Núñez</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[banco]]></category>
		<category><![CDATA[bancos]]></category>
		<category><![CDATA[chile]]></category>
		<category><![CDATA[chilenos]]></category>
		<category><![CDATA[widget]]></category>

		<guid isPermaLink="false">http://joaquinnunez.cl/blog/?p=601</guid>
		<description><![CDATA[Simple widget para symfony con listado de bancos chilenos tomados desde el sitio de la Superintendencia de Bancos e Instituciones Financieras de Chile aka SBIF para los amigos. Aquí la Lista de Instituciones Fiscalizadas Descarga [zip] [tar.gz] Saludos]]></description>
			<content:encoded><![CDATA[<p>Simple widget para symfony con listado de bancos chilenos tomados desde el sitio de la <a title="SBIF" href="http://www.sbif.cl">Superintendencia de Bancos e Instituciones Financieras de Chile</a> aka SBIF para los amigos.</p>
<p>Aquí la <a title="Lista de Instituciones Fizcalizadas por SBIF" href="http://www.sbif.cl/sbifweb/servlet/ConozcaSBIF?indice=7.5.1.1&amp;idContenido=483">Lista de Instituciones Fiscalizadas </a></p>
<p>Descarga <a title="sfWidgetFormChoiceChileanBanks" href="http://joaquinnunez.cl/download/sfWidgetFormChoiceChileanBanks.class.php.zip">[zip]</a> <a title="sfWidgetFormChoiceChileanBanks" href="http://joaquinnunez.cl/download/sfWidgetFormChoiceChileanBanks.class.php.tar.gz">[tar.gz]</a></p>
<p>Saludos</p>
]]></content:encoded>
			<wfw:commentRss>http://joaquinnunez.cl/blog/2010/07/26/sfwidgetformchoicechileanbanks/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Custom SQL queries in symfony 1.4 with Propel</title>
		<link>http://joaquinnunez.cl/blog/2010/07/01/custom-sql-queries-in-symfony-1-4-with-propel/</link>
		<comments>http://joaquinnunez.cl/blog/2010/07/01/custom-sql-queries-in-symfony-1-4-with-propel/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 12:45:32 +0000</pubDate>
		<dc:creator>Joaquín Núñez</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[1.4]]></category>
		<category><![CDATA[custom]]></category>
		<category><![CDATA[pdo]]></category>
		<category><![CDATA[propel]]></category>
		<category><![CDATA[queries]]></category>
		<category><![CDATA[query]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://joaquinnunez.cl/blog/?p=577</guid>
		<description><![CDATA[The solution is quite simple, use PDO directly. All the information that you need is in the pdo php page $connection = Propel::getConnection&#40;&#41;; $sql = &#34;YOUR SQL QUERY&#34;; $statement = $connection-&#62;prepare&#40;$sql&#41;; $statement-&#62;execute&#40;&#41;; while&#40;$result = $statement-&#62;fetch&#40;PDO::FETCH_ASSOC&#41;&#41; &#123; // do something &#125; greetings]]></description>
			<content:encoded><![CDATA[<p>The solution is quite simple, use PDO directly. All the information that you need is in the <a href="http://cl.php.net/pdo">pdo php page</a></p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;"><span class="re0">$connection</span> <span class="sy0">=</span> Propel<span class="sy0">::</span><span class="me2">getConnection</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="re0">$sql</span> <span class="sy0">=</span> <span class="st0">&quot;YOUR SQL QUERY&quot;</span><span class="sy0">;</span><br />
<span class="re0">$statement</span> <span class="sy0">=</span> <span class="re0">$connection</span><span class="sy0">-&gt;</span><span class="me1">prepare</span><span class="br0">&#40;</span><span class="re0">$sql</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="re0">$statement</span><span class="sy0">-&gt;</span><span class="me1">execute</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></p>
<p><span class="kw1">while</span><span class="br0">&#40;</span><span class="re0">$result</span> <span class="sy0">=</span> <span class="re0">$statement</span><span class="sy0">-&gt;</span><span class="me1">fetch</span><span class="br0">&#40;</span>PDO<span class="sy0">::</span><span class="me2">FETCH_ASSOC</span><span class="br0">&#41;</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
<span class="co1">// do something</span><br />
<span class="br0">&#125;</span></div>
</div>
<p>greetings</p>
]]></content:encoded>
			<wfw:commentRss>http://joaquinnunez.cl/blog/2010/07/01/custom-sql-queries-in-symfony-1-4-with-propel/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>script svn para proyectos symfony cuandos usas eclipse</title>
		<link>http://joaquinnunez.cl/blog/2009/03/09/script-svn-para-proyectos-symfony-cuandos-usas-eclipse/</link>
		<comments>http://joaquinnunez.cl/blog/2009/03/09/script-svn-para-proyectos-symfony-cuandos-usas-eclipse/#comments</comments>
		<pubDate>Mon, 09 Mar 2009 21:23:55 +0000</pubDate>
		<dc:creator>Joaquín Núñez</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://joaquinnunez.cl/blog/?p=381</guid>
		<description><![CDATA[Sin muchas palabras, el código lo dice todo. #!/bin/bash # $1 es usado como el nombre del directorio donde esta el proyecto # y ademas se usara para crear el repositorio # simplemente cambia file:///ruta/al/repositorio/svn por la ruta de tu repositorio cd $1 svn mkdir -m &#34;Creacion del layout&#34; file:///ruta/al/repositorio/svn/$1/trunk file:///ruta/al/repositorio/svn/$1/tags file:///ruta/al/repositorio/svn/$1/branches rm -rf cache/* [...]]]></description>
			<content:encoded><![CDATA[<p>Sin muchas palabras, el código lo dice todo.</p>
<pre>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;"><span class="co0">#!/bin/bash</span>

<span class="co0"># $1 es usado como el nombre del directorio donde esta el proyecto</span>
<span class="co0"># y ademas se usara para crear el repositorio</span>
<span class="co0"># simplemente cambia file:///ruta/al/repositorio/svn por la ruta de tu repositorio</span>

<span class="kw3">cd</span> $1
<span class="kw2">svn</span> <span class="kw2">mkdir</span> <span class="re5">-m</span> <span class="st0">&quot;Creacion del layout&quot;</span> <span class="kw2">file</span>:<span class="sy0">///</span>ruta<span class="sy0">/</span>al<span class="sy0">/</span>repositorio<span class="sy0">/</span>svn<span class="sy0">/</span>$1<span class="sy0">/</span>trunk <span class="kw2">file</span>:<span class="sy0">///</span>ruta<span class="sy0">/</span>al<span class="sy0">/</span>repositorio<span class="sy0">/</span>svn<span class="sy0">/</span>$1<span class="sy0">/</span>tags <span class="kw2">file</span>:<span class="sy0">///</span>ruta<span class="sy0">/</span>al<span class="sy0">/</span>repositorio<span class="sy0">/</span>svn<span class="sy0">/</span>$1<span class="sy0">/</span>branches
<span class="kw2">rm</span> <span class="re5">-rf</span> cache<span class="sy0">/*</span>
<span class="kw2">rm</span> <span class="re5">-rf</span> log<span class="sy0">/*</span>
<span class="kw2">svn</span> import <span class="re5">-m</span> <span class="st0">&quot;Primera importacion&quot;</span> . <span class="kw2">file</span>:<span class="sy0">///</span>ruta<span class="sy0">/</span>al<span class="sy0">/</span>repositorio<span class="sy0">/</span>svn<span class="sy0">/</span>$1<span class="sy0">/</span>trunk
<span class="kw3">cd</span> ..
<span class="kw2">mv</span> $1 $1-imported
<span class="kw2">mkdir</span> $1
<span class="kw3">cd</span> $1
<span class="kw2">svn</span> <span class="kw2">co</span> <span class="kw2">file</span>:<span class="sy0">///</span>ruta<span class="sy0">/</span>al<span class="sy0">/</span>repositorio<span class="sy0">/</span>svn<span class="sy0">/</span>$1<span class="sy0">/</span>trunk .
<span class="kw2">svn</span> propset <span class="kw2">svn</span>:ignore <span class="st_h">'*'</span> log
<span class="kw2">svn</span> propset <span class="kw2">svn</span>:ignore <span class="st_h">'*'</span> cache
<span class="kw2">svn</span> propset <span class="kw2">svn</span>:ignore <span class="st_h">'
.cache
.project
.settings'</span> .
<span class="kw2">svn</span> ci <span class="re5">-m</span> <span class="st0">&quot;svn:ignore&quot;</span></div>
</div>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://joaquinnunez.cl/blog/2009/03/09/script-svn-para-proyectos-symfony-cuandos-usas-eclipse/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Sistema de mensajes para Symfony, parte 1</title>
		<link>http://joaquinnunez.cl/blog/2009/02/12/sistema-de-mensajes-para-symfony-parte-1/</link>
		<comments>http://joaquinnunez.cl/blog/2009/02/12/sistema-de-mensajes-para-symfony-parte-1/#comments</comments>
		<pubDate>Thu, 12 Feb 2009 23:28:32 +0000</pubDate>
		<dc:creator>Joaquín Núñez</dc:creator>
				<category><![CDATA[jquery]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[css]]></category>

		<guid isPermaLink="false">http://joaquinnunez.cl/blog/?p=346</guid>
		<description><![CDATA[Que es? Este sistema de mensajes para symfony es simplemente una manera fácil y sencilla de tener mensajes como los de acá incorporados en tus acciones. Si más de una vez envidiaste el mensaje del &#8220;admin-generator&#8221; que dice en una linda cajita verde &#8220;Your modifications have been saved&#8221;, este post es para ti. Que obtendré [...]]]></description>
			<content:encoded><![CDATA[<h2>Que es?</h2>
<p>Este sistema de mensajes para symfony es simplemente una manera fácil y sencilla de tener mensajes como los de <a href="http://css.dzone.com/news/css-message-boxes-different-me">acá</a> incorporados en tus acciones. Si más de una vez envidiaste el mensaje del &#8220;admin-generator&#8221; que dice  en una linda cajita verde &#8220;Your modifications have been saved&#8221;, este post es para ti.</p>
<h2>Que obtendré con esto?</h2>
<p>Obtendrás mensajes de acciones exitosas, mensajes de errores, warnings y mensajes informativos con un diseño <a href="http://css.dzone.com/news/css-message-boxes-different-me">bastante decente</a> (aunque lo puedes cambiar si quieres), faciles de usar y con un código de uso menor. Además evitarás tener que crear acciones nuevas o agregar mayor lógica a las acciones para mostrar mensajes.</p>
<h2>Que necesito?</h2>
<p>Solo un par de minutos para implementarlo y entenderlo&#8230;. nada más.</p>
<p>Bueno basta de blabla y vamos a lo que nos interesa.</p>
<p>En esta primera parte y para no tener un post muy largo, sólo pondre el código necesario para los mensajes de errores (errores de validación) y los mensajes de acciones exitosas.</p>
<p>Tal como había comentado tomé de <a href="http://css.dzone.com/news/css-message-boxes-different-me">esta página</a> el diseño para los mensajes al que agregue sólo un cambio que mencionaré más adelante&#8230;. aquí necesitarás el código css y las imagenes para las cajas de mensajes. (Cuando publique la segunda parte habilito la descarga de todo el contenido&#8230; pero si estas ansioso, puedes descargar las imagenes de la página con el css).</p>
<p>El código css es el siguiente:</p>
<pre>
<div class="codesnip-container" >
<div class="css codesnip" style="font-family:monospace;"><span class="co1">@CHARSET &quot;UTF-8&quot;;</span>

<span class="re1">.info</span><span class="sy0">,</span> <span class="re1">.success</span><span class="sy0">,</span> <span class="re1">.warning</span><span class="sy0">,</span> <span class="re1">.error</span><span class="sy0">,</span> <span class="re1">.validation</span> <span class="br0">&#123;</span>
<span class="kw1">border</span><span class="sy0">:</span> <span class="re3">1px</span> <span class="kw2">solid</span><span class="sy0">;</span>
<span class="kw1">margin</span><span class="sy0">:</span> <span class="re3">10px</span> <span class="re3">0px</span><span class="sy0">;</span>
<span class="kw1">padding</span><span class="sy0">:</span><span class="re3">15px</span> <span class="re3">10px</span> <span class="re3">15px</span> <span class="re3">50px</span><span class="sy0">;</span>
<span class="kw1">background-repeat</span><span class="sy0">:</span> <span class="kw2">no-repeat</span><span class="sy0">;</span>
<span class="kw1">background-position</span><span class="sy0">:</span> <span class="re3">10px</span> <span class="kw2">center</span><span class="sy0">;</span>
<span class="br0">&#125;</span>

<span class="re1">.info</span> ul<span class="sy0">,</span> <span class="re1">.success</span> ul<span class="sy0">,</span> <span class="re1">.warning</span> ul<span class="sy0">,</span> <span class="re1">.error</span> ul<span class="sy0">,</span> <span class="re1">.validation</span> ul <span class="br0">&#123;</span>
<span class="kw1">margin</span><span class="sy0">:</span> <span class="re3">0px</span><span class="sy0">;</span>
<span class="br0">&#125;</span>

<span class="re1">.info</span> <span class="br0">&#123;</span>
<span class="kw1">color</span><span class="sy0">:</span> <span class="re0">#00529B</span><span class="sy0">;</span>
<span class="kw1">background-color</span><span class="sy0">:</span> <span class="re0">#BDE5F8</span><span class="sy0">;</span>
<span class="kw1">background-image</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'/images/info.png'</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="re1">.success</span> <span class="br0">&#123;</span>
<span class="kw1">color</span><span class="sy0">:</span> <span class="re0">#4F8A10</span><span class="sy0">;</span>
<span class="kw1">background-color</span><span class="sy0">:</span> <span class="re0">#DFF2BF</span><span class="sy0">;</span>
<span class="kw1">background-image</span><span class="sy0">:</span><span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'/images/success.png'</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="re1">.warning</span> <span class="br0">&#123;</span>
<span class="kw1">color</span><span class="sy0">:</span> <span class="re0">#9F6000</span><span class="sy0">;</span>
<span class="kw1">background-color</span><span class="sy0">:</span> <span class="re0">#FEEFB3</span><span class="sy0">;</span>
<span class="kw1">background-image</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'/images/warning.png'</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="re1">.error</span> <span class="br0">&#123;</span>
<span class="kw1">color</span><span class="sy0">:</span> <span class="re0">#D8000C</span><span class="sy0">;</span>
<span class="kw1">background-color</span><span class="sy0">:</span> <span class="re0">#FFBABA</span><span class="sy0">;</span>
<span class="kw1">background-image</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">&#40;</span><span class="st0">'/images/error.png'</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span>

<span class="re1">.info</span> img<span class="re1">.close</span><span class="sy0">,</span> <span class="re1">.success</span> img<span class="re1">.close</span><span class="sy0">,</span> <span class="re1">.warning</span> img<span class="re1">.close</span><span class="sy0">,</span> <span class="re1">.error</span> img<span class="re1">.close</span><span class="sy0">,</span> <span class="re1">.validation</span> img<span class="re1">.closes</span> <span class="br0">&#123;</span>
<span class="kw1">float</span><span class="sy0">:</span><span class="kw1">right</span><span class="sy0">;</span>
<span class="kw1">margin-right</span><span class="sy0">:</span><span class="re3">-2px</span><span class="sy0">;</span>
<span class="kw1">margin-top</span><span class="sy0">:</span><span class="re3">-5px</span><span class="sy0">;</span>
<span class="br0">&#125;</span></div>
</div>
</pre>
<p>Este código php puede ir directamente en el layout, aunque prefiero ponerlo en un partial aparte e incluirlo en el layout.</p>
<p>Para que el script funcione debe incluirse jQuery.</p>
<pre>
<div class="codesnip-container" >
<div class="html4strict codesnip" style="font-family:monospace;"><span class="sc2">&lt;<a href="http://december.com/html/4/element/script.html"><span class="kw2">script</span></a> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">&quot;text/javascript&quot;</span>&gt;</span>
<span class="sc-1">&lt;!--</span>
<span class="sc-1">$(document).ready(function(){</span>
<span class="sc-1"> &nbsp;// mensaje de exito, si clickean en la cruz se saca</span>
<span class="sc-1"> &nbsp;$('.success .close').click(function(){</span>
<span class="sc-1"> &nbsp; &nbsp;$(this).parent().fadeOut('slow', function(){</span>
<span class="sc-1">&nbsp; &nbsp; &nbsp; $(this).remove(); </span>
<span class="sc-1"> &nbsp; &nbsp;});</span>
<span class="sc-1"> &nbsp;});</span>

<span class="sc-1"> &nbsp;// descomentar esto para activar el auto-quitado del mensaje en 5 segundos</span>
<span class="sc-1"> &nbsp;// si el usuario no lo a quitado primero =)</span>
<span class="sc-1"> &nbsp;//setTimeout('$(&quot;.success .close&quot;).trigger(&quot;click&quot;)', 5000);</span>
<span class="sc-1">});</span>
<span class="sc-1">//--&gt;</span>
<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/script.html"><span class="kw2">script</span></a>&gt;</span>

<span class="sc2">&lt;?php <span class="sy0">//</span>se muestran los errores ?&gt;</span>
<span class="sc2">&lt;?php if <span class="br0">&#40;</span>$sf_request-&gt;</span>hasErrors()): ?&gt;
<span class="sc2">&lt;<a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;error&quot;</span>&gt;</span>
&nbsp; <span class="sc2">&lt;<a href="http://december.com/html/4/element/ul.html"><span class="kw2">ul</span></a>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;?php foreach <span class="br0">&#40;</span>$sf_request-&gt;</span>getErrors() as $error): ?&gt;
&nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<a href="http://december.com/html/4/element/li.html"><span class="kw2">li</span></a>&gt;&lt;?php echo $error ?&gt;&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/li.html"><span class="kw2">li</span></a>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;?php endforeach; ?&gt;</span>
&nbsp; <span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/ul.html"><span class="kw2">ul</span></a>&gt;</span>
<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
<span class="sc2">&lt;?php endif; ?&gt;</span>

<span class="sc2">&lt;?php <span class="sy0">//</span> se muestra el mensaje de acción exitosa, si es que lo hay ?&gt;</span>
<span class="sc2">&lt;?php if <span class="br0">&#40;</span>$sf_flash-&gt;</span>has('success')): ?&gt;
&nbsp; <span class="sc2">&lt;<a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;success&quot;</span>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;?php <span class="sy0">//</span> imagen usada para cerrar el mensaje de exito ?&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;<a href="http://december.com/html/4/element/img.html"><span class="kw2">img</span></a> <span class="kw3">src</span><span class="sy0">=</span><span class="st0">&quot;/images/close.png&quot;</span> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;close&quot;</span><span class="sy0">/</span>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;<a href="http://december.com/html/4/element/ul.html"><span class="kw2">ul</span></a>&gt;</span>
&nbsp; &nbsp; &nbsp; <span class="sc2">&lt;<a href="http://december.com/html/4/element/li.html"><span class="kw2">li</span></a>&gt;&lt;?php echo $sf_flash-&gt;</span>get('success') ?&gt;<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/li.html"><span class="kw2">li</span></a>&gt;</span>
&nbsp; &nbsp; <span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/ul.html"><span class="kw2">ul</span></a>&gt;</span>
&nbsp; <span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
<span class="sc2">&lt;?php <span class="sy0">//</span> lo quito manualmente de la sesion porque si se hizo un forward no se sale ?&gt;</span>
<span class="sc2">&lt;?php $sf_flash-&gt;</span>remove('success') ?&gt;
<span class="sc2">&lt;?php endif; ?&gt;</span>
<span class="sc2">&lt;?php $sf_flash-&gt;</span>clear() ?&gt;</div>
</div>
</pre>
<p>Finalmente con este código fuente puedes tener tus errores de validación en una caja bastante presentable.</p>
<p>Para agregar un mensaje de acción exitosa sólo debes agregar a la acción el siguiente código:<br />
<span class="code">$this-&gt;setFlash(&#8216;success&#8217;, &#8216;Mensaje de acción exitosa&#8217;);</span><br />
En la segunda parte subiré el código fuente, explicaré como implementar un sistema para mostrar información de ayuda a los usuarios en el cual los mensajes no vuelven a aparecer si el usuario ha cerrado el mensaje y mencionaré como usar los mensajes de warning.</p>
<p>Saludos</p>
]]></content:encoded>
			<wfw:commentRss>http://joaquinnunez.cl/blog/2009/02/12/sistema-de-mensajes-para-symfony-parte-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>symfony: cambiando el directorio web, como hacerlo y datos utiles</title>
		<link>http://joaquinnunez.cl/blog/2009/01/28/symfony-cambiando-el-directorio-web-como-hacerlo-y-datos-utiles/</link>
		<comments>http://joaquinnunez.cl/blog/2009/01/28/symfony-cambiando-el-directorio-web-como-hacerlo-y-datos-utiles/#comments</comments>
		<pubDate>Wed, 28 Jan 2009 23:32:45 +0000</pubDate>
		<dc:creator>Joaquín Núñez</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://joaquinnunez.cl/blog/?p=332</guid>
		<description><![CDATA[Primero que todo estoy hablando de symfony 1.0 por lo que no aseguro que esto pase en 1.1 o 1.2 La primera vez que subi un proyecto a un servidor al que no podia meterle mucha mano las url quedaron un tanto bastante feas. El directorio en donde quedaba todo el contenido se llamaba htdocs, [...]]]></description>
			<content:encoded><![CDATA[<p>Primero que todo estoy hablando de symfony 1.0 por lo que no aseguro que esto pase en 1.1 o 1.2</p>
<p>La primera vez que subi un proyecto a un servidor al que no podia meterle mucha mano las url quedaron un <span style="text-decoration: line-through;">tanto</span> bastante feas. El directorio en donde quedaba todo el contenido se llamaba <span class="code">htdocs</span>, muy distinto al <span class="code">web</span> que trae por defecto symfony.</p>
<p>Creo que no es necesario contarles que las url se veian muy feas del estilo <span class="code">http://pagina.cl/web/index.php/xxxx</span> en vez del <span class="code">http://pagina.cl/xxxx</span> que debería haber quedado. Y como si fuera poco se podia acceder al contenido del sitio si ingresaban por ejemplo a <span class="code">http://pagina.cl/config/databases.yml</span> un resultado poco estetico y muy poco seguro.</p>
<p>Asi que me puse manos a la obra: leí el cochino manual &#8230;&#8230; y lo logré &#8230;.. después de casi ningún esfuerzo porqué esta todo  bien documentado XD.</p>
<p>La solución es agregar por aplicación al archivo <span class="code">app/miapp/config/config.php</span> lo siguiente:</p>
<pre>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;"><span class="re0">$sf_root_dir</span> <span class="sy0">=</span> sfConfig<span class="sy0">::</span><span class="me2">get</span><span class="br0">&#40;</span><span class="st_h">'sf_root_dir'</span><span class="br0">&#41;</span><span class="sy0">;</span>
sfConfig<span class="sy0">::</span><span class="me2">add</span><span class="br0">&#40;</span><a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span>
<span class="st_h">'sf_web_dir_name'</span> <span class="sy0">=&gt;</span> <span class="re0">$sf_web_dir_name</span> <span class="sy0">=</span> <span class="st_h">'aqui-el-nombre-del-directorio-que-usaras'</span><span class="sy0">,</span>
<span class="st_h">'sf_web_dir'</span> &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> <span class="re0">$sf_root_dir</span><span class="sy0">.</span><span class="kw4">DIRECTORY_SEPARATOR</span><span class="sy0">.</span><span class="re0">$sf_web_dir_name</span><span class="sy0">,</span>
<span class="st_h">'sf_upload_dir'</span> &nbsp; <span class="sy0">=&gt;</span> <span class="re0">$sf_root_dir</span><span class="sy0">.</span><span class="kw4">DIRECTORY_SEPARATOR</span><span class="sy0">.</span><span class="re0">$sf_web_dir_name</span><span class="sy0">.</span><span class="kw4">DIRECTORY_SEPARATOR</span><span class="sy0">.</span>sfConfig<span class="sy0">::</span><span class="me2">get</span><span class="br0">&#40;</span><span class="st_h">'sf_upload_dir_name'</span><span class="br0">&#41;</span><span class="sy0">,</span>
<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</div>
</pre>
<p>Muy sencillo, pero en realidad lo más importante son problemas que podrías encontrarte al hacer esto.</p>
<ul>
<li>Si estas usando svn y renombras el directorio <span class="code">web</span>, el directorio ahora con otro nombre será reconocido como nuevo, por lo que svn dira que esta sin versionar, pero OJO todo el contenido interior (<span class="code">css</span>, <span class="code">js</span>, <span class="code">images</span>, controladores frontales, etc) esta versionado&#8230;. ups! tienes problemas.</li>
<li>Soluciones: usa <a href="http://joaquinnunez.cl/blog/2008/10/30/borrando-recursivamente/">esto</a> o cambia el directorio antes de hacer tu import.</li>
</ul>
<ul>
<li>Si lograste cambiar el directorio sin problemas y has desarrollado por completo tu aplicación felicidades, es hora de hacer un <span class="code">freeze</span> (si es que lo tienes que hacer), pero OJO, por alguna razón a symfony no le interesa que hayas cambiado el directorio e intentará crear <span class="code">sf</span> dentro de <span class="code">web</span> &#8230;. pero coño! no está!&#8230;&#8230;. que hace symfony, no lo crea&#8230;</li>
<li>Soluciones: bueno&#8230; tomare el <span class="code">sf</span> de otro proyecto y &#8230;. noooo! recuerda que usas svn y ese <span class="code">sf</span> esta versionado te servirá sólo si usas nuevamente <a href="http://joaquinnunez.cl/blog/2008/10/30/borrando-recursivamente/">esto</a>, mejor haz el <span class="code">frezee</span> antes de cambiar el directorio o crea otro proyecto, haces <span class="code">frezee</span> y te robas el directorio <span class="code">sf</span>.</li>
</ul>
<ul>
<li>Ya casi lo lográs &#8230;. que más puede pasar?, pues a varios desarrolladores de plugins no se les ha ocurrido que puedes cambiar tu directorio y cuando enlazan a algo lo hacen directamente al directorio <span class="code">web</span>&#8230;. o no sfPhotoGalleryPlugin&#8230;</li>
<li>Solución: Meterle mano al plugin.</li>
</ul>
<p>Algo más??, no&#8230;. menos mal =)!</p>
]]></content:encoded>
			<wfw:commentRss>http://joaquinnunez.cl/blog/2009/01/28/symfony-cambiando-el-directorio-web-como-hacerlo-y-datos-utiles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>backend.php to /admin en symfony</title>
		<link>http://joaquinnunez.cl/blog/2009/01/15/backendphp-to-admin-en-symfony/</link>
		<comments>http://joaquinnunez.cl/blog/2009/01/15/backendphp-to-admin-en-symfony/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 01:47:05 +0000</pubDate>
		<dc:creator>Joaquín Núñez</dc:creator>
				<category><![CDATA[html]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[routing]]></category>

		<guid isPermaLink="false">http://joaquinnunez.cl/blog/?p=271</guid>
		<description><![CDATA[Actualización: Para versiones posteriores el proceso es el mismo salvo que no se cambia el valor de SF_ROOT_DIR, sino que esta linea: require_once(dirname(__FILE__).&#8217;/../config/ProjectConfiguration.class.php&#8217;); En la documentación de symfony (1.0) aparece en el capitulo de routing lo siguiente: SUGERENCIA Existe una forma de acceder a más de una aplicación sin indicar el nombre del script. Para [...]]]></description>
			<content:encoded><![CDATA[<p>Actualización:</p>
<p>Para versiones posteriores el proceso es el mismo salvo que no se cambia el valor de SF_ROOT_DIR, sino que esta linea:</p>
<p>require_once(dirname(__FILE__).&#8217;/../config/ProjectConfiguration.class.php&#8217;);</p>
<p>En la documentación de symfony (1.0) aparece en el <a href="http://www.symfony-project.org/book/1_0/09-Links-and-the-Routing-System">capitulo de routing</a> lo siguiente:</p>
<blockquote style="background: #FFFFDD url(http://www.symfony-project.org/images/tip.png) no-repeat scroll 5px 10px; border-bottom: 1px solid #DDDDDD; border-top: 1px solid #DDDDDD; margin: 10px 0; padding: 5px 20px 5px 45px;"><p>SUGERENCIA Existe una forma de acceder a más de una aplicación sin indicar el nombre del script. Para ello, se crean subdirectorios en el directorio web/ y se mueven los controladores frontales a cada subdirectorio. Después, se modifica el valor de las constantes SF_ROOT_DIR para cada uno de ellos y se crea el archivo .htaccess de configuración para cada aplicación.</p></blockquote>
<p>La verdad es que esto ayuda poco, al menos eso pienso yo, aquí les dejo los pasos necesarios para lograrlo en symfony 1.0</p>
<ul>
<li>Crear en el directorio <span class="code">web/</span> (u otro si es que lo cambiaste), el directorio que quieras usar, en este caso deseo que la aplicación administrativa cuyo contralador es <span class="code">backend.php</span> sea accesible desde <span class="code">http://pagina.cl/admin</span> en vez de <span class="code">http://pagina.cl/backend.php</span></li>
</ul>
<div class="codesnip-container" >mkdir web/admin</div>
<ul>
<li>Mover el controlador al directorio creado</li>
</ul>
<div class="codesnip-container" >mv backend.php admin/index.php</div>
<ul>
<li>Editar el valor de <span class="code">SF_ROOT_DIR</span></li>
</ul>
<div class="codesnip-container" >define(&#8216;SF_ROOT_DIR&#8217;, realpath(dirname(__FILE__).&#8217;/..&#8217;));</div>
<p>por</p>
<div class="codesnip-container" >define(&#8216;SF_ROOT_DIR&#8217;, realpath(dirname(__FILE__).&#8217;/../..&#8217;));</div>
<ul>
<li>Crear el archivo <span class="code">.htaccess</span> con el siguiente contenido (ojo con las comillas &#8220;&#8221; que se cambian y no funcionan ):</li>
</ul>
<div class="codesnip-container" >nano admin/.htaccess</div>
<div style="background: #EEEEEE none repeat scroll 0 0; border: 1px solid #CCCCCC; margin: 10px; padding: 5px;">Options +FollowSymLinks +ExecCGI<br />
&lt;IfModule mod_rewrite.c&gt;<br />
RewriteEngine On</p>
<p># we skip all files with .something<br />
RewriteCond %{REQUEST_URI} \..+$<br />
RewriteCond %{REQUEST_URI} !\.html$<br />
RewriteRule .* &#8211; [L]</p>
<p># we check if the .html version is here (caching)<br />
RewriteRule ^$ index.html [QSA]<br />
RewriteRule ^([^.]+)$ $1.html [QSA]<br />
RewriteCond %{REQUEST_FILENAME} !-f</p>
<p># no, so we redirect to our front web controller<br />
RewriteRule ^(.*)$ index.php [QSA,L]<br />
&lt;/IfModule&gt;</p>
<p># big crash from our front web controller<br />
ErrorDocument 500 &#8220;&lt;h2&gt;Application error&lt;/h2&gt;symfony application failed to start properly&#8221;</p>
</div>
<ul>
<li>Editar el archivo <span class="code">apps/backend/config/settings.yml</span>, y editar el contenido</li>
</ul>
<div class="codesnip-container" >no_script_name: off</div>
<p>por</p>
<div class="codesnip-container" >no_script_name: on</div>
<ul>
<li>Limpiar la cache  y crear los enlaces simbólicos en el directorio creado</li>
</ul>
<div class="codesnip-container" >symfony cc</div>
<div class="codesnip-container" >ln -s ../sf/ sf</div>
<div class="codesnip-container" >ln -s ../css/ css</div>
<div class="codesnip-container" >ln -s ../images/ images</div>
<div class="codesnip-container" >ln -s ../js/ js</div>
<div class="codesnip-container" >ln -s ../uploads/ uploads</div>
<ul>
<li>Disfrutar =D</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://joaquinnunez.cl/blog/2009/01/15/backendphp-to-admin-en-symfony/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>cambiando las url en symfony cuando trabajas con un diseñador</title>
		<link>http://joaquinnunez.cl/blog/2009/01/13/cambiando-las-url-en-symfony-cuando-trabajas-con-un-disenador/</link>
		<comments>http://joaquinnunez.cl/blog/2009/01/13/cambiando-las-url-en-symfony-cuando-trabajas-con-un-disenador/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 20:29:04 +0000</pubDate>
		<dc:creator>Joaquín Núñez</dc:creator>
				<category><![CDATA[html]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[enlaces]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://joaquinnunez.cl/blog/?p=259</guid>
		<description><![CDATA[Cuando uso symfony y trabajo con Alejandro por lo general recibo en sus diseños los enlaces relativos, algo así: &#60;a href=&#8221;noticia.php&#8221;&#62;noticia&#60;/a&#62; en vez de las url estaticas como esta &#60;a href=&#8221;/noticia.php&#8221;&#62;noticia&#60;/a&#62; que debiese usar. En realidad debiese usar link_to() para las url, pero bueno, me gusta dejarlo así =D, por lo que uso el el [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando uso <a href="http://www.symfony-project.org/">symfony</a> y trabajo con <a href="http://designa.cl/">Alejandro</a> por lo general recibo en sus diseños los enlaces relativos, algo así:</p>
<div class="codesnip-container" >&lt;a href=&#8221;noticia.php&#8221;&gt;noticia&lt;/a&gt;</div>
<p>en vez de las url estaticas como esta</p>
<div class="codesnip-container" >&lt;a href=&#8221;/noticia.php&#8221;&gt;noticia&lt;/a&gt;</div>
<p>que debiese usar.</p>
<p>En realidad debiese usar <span class="code">link_to()</span> para las url, pero bueno, me gusta dejarlo así =D, por lo que uso el el sistema de routing y la función <span class="code">url_for()</span> para dejar todas las url funcionando XD</p>
<p>Este hermoso comando cambia todas las url, disfruten</p>
<pre>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;"><span class="kw1">for</span> archivo <span class="kw1">in</span> $<span class="br0">&#40;</span><span class="kw2">ls</span> <span class="sy0">*</span>.html<span class="br0">&#41;</span>; <span class="kw1">do</span>
<span class="kw2">cat</span> <span class="re1">$archivo</span> <span class="sy0">|</span> <span class="kw2">sed</span> <span class="st_h">'s/&lt;a href=\&quot;\(.*\)\.html\&quot;/&lt;a href=\&quot;&lt;?php echo url_for(\&quot;@\1\&quot;) ?&gt;\&quot;/g'</span> <span class="sy0">&gt;</span> tmp;
<span class="kw2">cat</span> tmp <span class="sy0">&gt;</span> <span class="re1">$archivo</span>;
<span class="kw1">done</span>;
<span class="kw2">rm</span> tmp</div>
</div>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://joaquinnunez.cl/blog/2009/01/13/cambiando-las-url-en-symfony-cuando-trabajas-con-un-disenador/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>validador de rut para symfony</title>
		<link>http://joaquinnunez.cl/blog/2009/01/05/validador-de-rut-para-symfony/</link>
		<comments>http://joaquinnunez.cl/blog/2009/01/05/validador-de-rut-para-symfony/#comments</comments>
		<pubDate>Mon, 05 Jan 2009 03:46:18 +0000</pubDate>
		<dc:creator>Joaquín Núñez</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://joaquinnunez.cl/blog/?p=215</guid>
		<description><![CDATA[Estoy seguro que a más de a alguien le servirá este validador de rut para symfony. Si necesitas un validador del rut en php pero no usas symfony, también puede servirte. Sólo debes sacar la parte del código que te sirve ;) Será valido este rut?, emmmmm es un rut? &#8230; que opinan?]]></description>
			<content:encoded><![CDATA[<p>Estoy seguro que a más de a alguien le servirá este <a href="http://cli.gs/sf-rut-validator">validador de rut</a> para symfony.</p>
<p>Si necesitas un validador del rut en php pero no usas symfony, también puede servirte. Sólo debes sacar la parte del código que te sirve ;)</p>
<p>Será valido este rut?, emmmmm es un rut? &#8230; que opinan?</p>
<p><img class="aligncenter size-full wp-image-216" title="carne microsoft" src="http://joaquinnunez.cl/blog/wp-content/uploads/2009/01/microsoft-principal.jpg" alt="carne microsoft" width="400" height="259" /></p>
]]></content:encoded>
			<wfw:commentRss>http://joaquinnunez.cl/blog/2009/01/05/validador-de-rut-para-symfony/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

