<?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>Symfony e Internet &#187; sfWebRequest</title>
	<atom:link href="http://www.dcastello.com/category/symfony/sfwebrequest/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dcastello.com</link>
	<description>Conociendo la web</description>
	<lastBuildDate>Mon, 11 Jul 2011 16:03:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Generación de pdf&#039;s en symfony. Una acción y varias plantillas</title>
		<link>http://www.dcastello.com/27/04/2010/generacion-de-pdfs-en-symfony-una-accion-y-varias-plantillas/</link>
		<comments>http://www.dcastello.com/27/04/2010/generacion-de-pdfs-en-symfony-una-accion-y-varias-plantillas/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 18:02:16 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[Symfony]]></category>
		<category><![CDATA[sfWebRequest]]></category>

		<guid isPermaLink="false">http://www.dcastello.com/?p=79</guid>
		<description><![CDATA[Symfony tiene soporte nativo para los diferentes formatos y tipos mime, es decir, el mismo modelo y controlador pueden generar diferentes plantillas basándose en el formato de la petición. El formato por defecto en symfony es html, el resto de formatos pueden definirse en el factory sfWebRequest a través del fichero factories.yml. Pues bien, si [...]]]></description>
			<content:encoded><![CDATA[<p>Symfony tiene soporte nativo para los diferentes formatos y tipos mime, es decir, el mismo modelo y controlador pueden generar diferentes plantillas basándose en el formato de la petición.<br />
El formato por defecto en symfony es html, <em>el resto de formatos pueden definirse en el factory sfWebRequest a través del fichero factories.yml</em>.<br />
Pues bien, si necesitamos generar pdf&#8217;s y queremos hacer uso de ésta característica de symfony hemos de agregar al factory sfWebRequest el mime asociado a los pdf&#8217;s.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="code"><pre class="yaml" style="font-family:monospace;">request:
  class: sfWebRequest
    param:
      formats:
        txt:  text/plain
        js:   [application/javascript, application/x-javascript, text/javascript]
        css:  text/css
        json: [application/json, application/x-json]
        xml:  [text/xml, application/xml, application/x-xml]
        rdf:  application/rdf+xml
        atom: application/atom+xml
        pdf: application/pdf</pre></td></tr></table></div>

<p>Imaginemos que tenemos una acción <em>verContrato</em> cuyo contenido queremos generarlo en formato html y pdf. Para ello deberemos crear los siguientes templates:</p>
<ul>
<li>verContratoSuccess.php (encargada de visualizar el html)</li>
<li>verContratoSuccess.pdf.php (encargada de genera el pdf)</li>
</ul>
<p>y su correspondiente routing sería:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="yaml" style="font-family:monospace;">ver_contrato
  url: /ver-contrato.:sf_format
  param: { module: usuario, action: verContrato, sf_format: html }
  requirements:
    sf_format: (?:html|pdf)</pre></td></tr></table></div>

<p>Por último sólo quedaría implementar la función <em>executeVerContrato</em> en el actions.class.php correspondiente.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> usuarioActions <span style="color: #000000; font-weight: bold;">extends</span> sfActions
<span style="color: #009900;">&#123;</span>
  <span style="color: #339933;">...</span>
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> executeVerContrato<span style="color: #009900;">&#40;</span><span style="color: #000088;">$request</span><span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">// Aqui realizamos los cálculos necesario y symfony</span>
    <span style="color: #666666; font-style: italic;">// ya sabe que template ejecutar según la petición recibida</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #339933;">...</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Y de este modo, como ya he dicho, tenemos una única acción <em>verContrato</em> encargada de realizar los calculos, y dos templates que se utilizarán según necesitemos un tipo de formato u otro. Recordar que los <em>partials</em> pueden ser también diferentes según el formato:</p>
<ul>
<li>_datos.php</li>
<li>_datos.pdf.php</li>
</ul>
<p>Si necesitáis más información consultar este enlace al <a href="http://www.symfony-project.org/blog/2008/06/09/how-to-create-an-optimized-version-of-your-website-for-the-iphone-in-symfony-1-1">blog de symfony</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dcastello.com/27/04/2010/generacion-de-pdfs-en-symfony-una-accion-y-varias-plantillas/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>

