<?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>PHP Log &#187; Zend Framework</title>
	<atom:link href="http://www.php-log.de/programmierer/php/zend-framework/feed" rel="self" type="application/rss+xml" />
	<link>http://www.php-log.de</link>
	<description>Eine feine Sammlung nützlicher PHP Notizen</description>
	<lastBuildDate>Mon, 20 Sep 2010 00:22:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Ein Array mit fortlaufenden Tage eines Intervals mit Zend_Date</title>
		<link>http://www.php-log.de/425/php/ein-array-mit-fortlaufenden-tage-eines-intervals-mit-zend_date</link>
		<comments>http://www.php-log.de/425/php/ein-array-mit-fortlaufenden-tage-eines-intervals-mit-zend_date#comments</comments>
		<pubDate>Sat, 15 Aug 2009 21:10:59 +0000</pubDate>
		<dc:creator>ralle</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://www.php-log.de/?p=425</guid>
		<description><![CDATA[Lang ist&#8217;s her dass ich eine Tabelle bauen musste, deren Zeilen einen jeweils einen Tag eines bestimmten Datum-Intervals representieren. So wie hier: Für die Lösung nutze ich wie immer Zend_Date. /** * Get an array with all days $from - $till * * @param string $from start date e.g. 2008-12-24 * @param string $till end [...]]]></description>
			<content:encoded><![CDATA[<p>Lang ist&#8217;s her dass ich eine Tabelle bauen musste, deren Zeilen einen jeweils einen Tag eines bestimmten Datum-Intervals representieren. So wie hier:</p>
<div id="attachment_426" class="wp-caption alignleft" style="width: 413px"><img class="size-full wp-image-426" title="Datumsinterval" src="http://www.php-log.de/wp-content/uploads/2009/08/Editors.png" alt="Datumsinterval" width="403" height="256" /><p class="wp-caption-text">Ein Array mit fortlaufenden Tagen eines Datum-Interval</p></div>
<p><span id="more-425"></span></p>
<p>Für die Lösung nutze ich wie immer Zend_Date.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #009933; font-style: italic;">/**
 * Get an array with all days $from - $till
 *
 * @param string $from start date e.g. 2008-12-24
 * @param string $till end date e.g. 2008-12-24
 * @param string $max maximal number of days 
 * @return array
 * @author Ralf Kramer
 */</span>
<span style="color: #000000; font-weight: bold;">function</span> getDayArray<span style="color: #009900;">&#40;</span><span style="color: #000088;">$from</span><span style="color: #339933;">,</span> <span style="color: #000088;">$till</span><span style="color: #339933;">,</span> <span style="color: #000088;">$max</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">365</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$start</span> 	<span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Zend_Date<span style="color: #009900;">&#40;</span><span style="color: #000088;">$from</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$stop</span> 	<span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Zend_Date<span style="color: #009900;">&#40;</span><span style="color: #000088;">$till</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000088;">$res</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$i</span> 	 <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$start</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">compare</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$stop</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
		<span style="color: #990000;">array_push</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$res</span><span style="color: #339933;">,</span> 
			<span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
				<span style="color: #0000ff;">'date'</span> 		<span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$start</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'yyyy-MM-dd'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
				<span style="color: #0000ff;">'week'</span> 		<span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$start</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get</span><span style="color: #009900;">&#40;</span>Zend_Date<span style="color: #339933;">::</span><span style="color: #004000;">WEEK</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
				<span style="color: #0000ff;">'day_name'</span> 	<span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$start</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get</span><span style="color: #009900;">&#40;</span>Zend_Date<span style="color: #339933;">::</span><span style="color: #004000;">WEEKDAY</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
				<span style="color: #0000ff;">'weekday'</span> 	<span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$start</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get</span><span style="color: #009900;">&#40;</span>Zend_Date<span style="color: #339933;">::</span><span style="color: #004000;">WEEKDAY_DIGIT</span><span style="color: #009900;">&#41;</span>
			<span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000088;">$start</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">add</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span> Zend_Date<span style="color: #339933;">::</span><span style="color: #004000;">DAY</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// Emergency break</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$max</span> <span style="color: #009900;">&#41;</span>
			<span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000088;">$i</span><span style="color: #339933;">++;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #b1b100;">return</span> <span style="color: #000088;">$res</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000088;">$dates</span> <span style="color: #339933;">=</span> getDayArray<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'2009-01-01'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'2009-01-07'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">print_r</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$dates</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">Array</span>
<span style="color: #009900;">&#40;</span>
    <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">Array</span>
        <span style="color: #009900;">&#40;</span>
            <span style="color: #009900;">&#91;</span><span style="color: #990000;">date</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">2009</span><span style="color: #339933;">-</span><span style="color: #208080;">01</span><span style="color: #339933;">-</span><span style="color: #208080;">01</span>
            <span style="color: #009900;">&#91;</span>week<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #208080;">01</span>
            <span style="color: #009900;">&#91;</span>day_name<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=&gt;</span> Donnerstag
            <span style="color: #009900;">&#91;</span>weekday<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">4</span>
        <span style="color: #009900;">&#41;</span>
&nbsp;
    <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">Array</span>
        <span style="color: #009900;">&#40;</span>
            <span style="color: #009900;">&#91;</span><span style="color: #990000;">date</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">2009</span><span style="color: #339933;">-</span><span style="color: #208080;">01</span><span style="color: #339933;">-</span><span style="color: #208080;">02</span>
            <span style="color: #009900;">&#91;</span>week<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #208080;">01</span>
            <span style="color: #009900;">&#91;</span>day_name<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=&gt;</span> Freitag
            <span style="color: #009900;">&#91;</span>weekday<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">5</span>
        <span style="color: #009900;">&#41;</span>
&nbsp;
    <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">Array</span>
        <span style="color: #009900;">&#40;</span>
            <span style="color: #009900;">&#91;</span><span style="color: #990000;">date</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">2009</span><span style="color: #339933;">-</span><span style="color: #208080;">01</span><span style="color: #339933;">-</span><span style="color: #208080;">03</span>
            <span style="color: #009900;">&#91;</span>week<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #208080;">01</span>
            <span style="color: #009900;">&#91;</span>day_name<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=&gt;</span> Samstag
            <span style="color: #009900;">&#91;</span>weekday<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">6</span>
        <span style="color: #009900;">&#41;</span>
&nbsp;
    <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">Array</span>
        <span style="color: #009900;">&#40;</span>
            <span style="color: #009900;">&#91;</span><span style="color: #990000;">date</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">2009</span><span style="color: #339933;">-</span><span style="color: #208080;">01</span><span style="color: #339933;">-</span><span style="color: #208080;">04</span>
            <span style="color: #009900;">&#91;</span>week<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #208080;">01</span>
            <span style="color: #009900;">&#91;</span>day_name<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=&gt;</span> Sonntag
            <span style="color: #009900;">&#91;</span>weekday<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">0</span>
        <span style="color: #009900;">&#41;</span>
&nbsp;
    <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">4</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">Array</span>
        <span style="color: #009900;">&#40;</span>
            <span style="color: #009900;">&#91;</span><span style="color: #990000;">date</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">2009</span><span style="color: #339933;">-</span><span style="color: #208080;">01</span><span style="color: #339933;">-</span><span style="color: #208080;">05</span>
            <span style="color: #009900;">&#91;</span>week<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #208080;">02</span>
            <span style="color: #009900;">&#91;</span>day_name<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=&gt;</span> Montag
            <span style="color: #009900;">&#91;</span>weekday<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">1</span>
        <span style="color: #009900;">&#41;</span>
&nbsp;
    <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">5</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">Array</span>
        <span style="color: #009900;">&#40;</span>
            <span style="color: #009900;">&#91;</span><span style="color: #990000;">date</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">2009</span><span style="color: #339933;">-</span><span style="color: #208080;">01</span><span style="color: #339933;">-</span><span style="color: #208080;">06</span>
            <span style="color: #009900;">&#91;</span>week<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #208080;">02</span>
            <span style="color: #009900;">&#91;</span>day_name<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=&gt;</span> Dienstag
            <span style="color: #009900;">&#91;</span>weekday<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">2</span>
        <span style="color: #009900;">&#41;</span>
&nbsp;
    <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">Array</span>
        <span style="color: #009900;">&#40;</span>
            <span style="color: #009900;">&#91;</span><span style="color: #990000;">date</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">2009</span><span style="color: #339933;">-</span><span style="color: #208080;">01</span><span style="color: #339933;">-</span><span style="color: #208080;">07</span>
            <span style="color: #009900;">&#91;</span>week<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #208080;">02</span>
            <span style="color: #009900;">&#91;</span>day_name<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=&gt;</span> Mittwoch
            <span style="color: #009900;">&#91;</span>weekday<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">3</span>
        <span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#41;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.php-log.de/425/php/ein-array-mit-fortlaufenden-tage-eines-intervals-mit-zend_date/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend_Date in ein MySQL kompatibles Datum konvertieren</title>
		<link>http://www.php-log.de/378/php/zend_date-in-ein-mysql-kompatibles-datum-konvertieren</link>
		<comments>http://www.php-log.de/378/php/zend_date-in-ein-mysql-kompatibles-datum-konvertieren#comments</comments>
		<pubDate>Tue, 14 Jul 2009 15:58:47 +0000</pubDate>
		<dc:creator>ralle</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://www.php-log.de/?p=378</guid>
		<description><![CDATA[Zend_Date hat für alle erdenklichen Ausgabeformate eine Lösung. Nur für den Einsatz als MySQL Datum nicht. das muss man noch &#8216;händisch&#8217; einrichten. Die Lösung ist natürlich sehr einfach, aber da ich das Zend Framework nur gelegentlich benutze musste ich trotzdem danach googlen. Fündig wurde ich hier: http://www.eatmybusiness.com/food/2009/01/31/how-to-get-zend-date-in-sql-timestamp-format-eg-mysql-yyyy-mm-dd-hhmmss/90/ Hier die vereinfachte Zusammenfassung: $date = new Zend_Date&#40;&#41;; [...]]]></description>
			<content:encoded><![CDATA[<p>Zend_Date hat für alle erdenklichen Ausgabeformate eine Lösung. Nur für den Einsatz als MySQL Datum nicht. das muss man noch &#8216;händisch&#8217; einrichten.<span id="more-378"></span></p>
<p>Die Lösung ist natürlich sehr einfach, aber da ich das Zend Framework nur gelegentlich benutze musste ich trotzdem danach googlen. Fündig wurde ich hier: <a href="http://www.eatmybusiness.com/food/2009/01/31/how-to-get-zend-date-in-sql-timestamp-format-eg-mysql-yyyy-mm-dd-hhmmss/90/" target="_blank">http://www.eatmybusiness.com/food/2009/01/31/how-to-get-zend-date-in-sql-timestamp-format-eg-mysql-yyyy-mm-dd-hhmmss/90/</a> </p>
<p>Hier die vereinfachte Zusammenfassung:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$date</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Zend_Date<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$sql_date_pattern</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'yyyy-MM-dd HH:mm:ss'</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$date</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$sql_date_pattern</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Achja, dann gibt es auch noch eine kleine Falle wenn man mit ein Zend_Date Object, mit einem Datum aus einer MySQL DB initialisieren will. Wer das Datum nicht vorher mit <code>strtotime()</code> behandelt kann sich einen gut versteckten Fehler einfangen.:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$day</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;2009-10-11&quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Falsch</span>
<span style="color: #000088;">$date</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Zend_Date<span style="color: #009900;">&#40;</span><span style="color: #000088;">$day</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$week</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$date</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get</span><span style="color: #009900;">&#40;</span>Zend_Date<span style="color: #339933;">::</span><span style="color: #004000;">WEEK</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">#-&gt; Nov 10, 2009 12:00:00 AM
</span>
<span style="color: #666666; font-style: italic;">// Richtig</span>
<span style="color: #000088;">$date</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Zend_Date<span style="color: #009900;">&#40;</span><span style="color: #990000;">strtotime</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$day</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$week</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$date</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get</span><span style="color: #009900;">&#40;</span>Zend_Date<span style="color: #339933;">::</span><span style="color: #004000;">WEEK</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">#-&gt; Oct 11, 2009 12:00:00 AM</span></pre></div></div>

<p>Kurioserweise tritt dieses Phänomen bei mir nur dann auf, wenn ich das Script via CLI auf der Shell aufrufe.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.php-log.de/378/php/zend_date-in-ein-mysql-kompatibles-datum-konvertieren/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PDF bearbeiten mit Zend Framework in einer CakePHP Anwendung</title>
		<link>http://www.php-log.de/150/php/pdf-bearbeiten-mit-zend-framework-in-einer-cakephp-anwendung</link>
		<comments>http://www.php-log.de/150/php/pdf-bearbeiten-mit-zend-framework-in-einer-cakephp-anwendung#comments</comments>
		<pubDate>Tue, 10 Feb 2009 04:23:28 +0000</pubDate>
		<dc:creator>ralle</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Media Views]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[views]]></category>

		<guid isPermaLink="false">http://www.php-log.de/?p=150</guid>
		<description><![CDATA[Es gibt zur Zeit noch keine PDF Unterstützung in CakePHP. Auch in der Bakery gibt es nur ein Tutorial für die Entwicklung mit TCPDF, aber  danach steht mir heute nicht der Sinn. Vielmehr reizt es mich CakePHP mit dem Zend Framework zu verheiraten. Die Komponente Zend_Pdf kann PDF&#8217;s einlesen, bzw. neu anlegen, beschreiben, speichern und [...]]]></description>
			<content:encoded><![CDATA[<p>Es gibt zur Zeit noch keine PDF Unterstützung in CakePHP. Auch in der <a href="http://bakery.cakephp.org/categories/view/3" target="_blank">Bakery</a> gibt es nur ein Tutorial für die Entwicklung mit <a href="http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf" target="_blank">TCPDF</a>, aber  danach steht mir heute nicht der Sinn. Vielmehr reizt es mich CakePHP mit dem Zend Framework zu verheiraten. Die Komponente Zend_Pdf kann PDF&#8217;s einlesen, bzw. neu anlegen, beschreiben, speichern und noch einges mehr. Ein schönes Stück Software.<span id="more-150"></span></p>
<p>CakePHP ist auf dass Einbinden fremder Libraries vorbereitet und bietet dem Zend Framework den Ordner /vendors als Quartier. Über die Konstante <strong>VENDORS</strong> kann dann auch fleissig inkludiert werden. Da ich gleich das ganze Zend Framework in den Vendor Ordner gepackt ist es nur konsequent diesen in den include_path einzubinden:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// /app/config/bootstrap.php</span>
<span style="color: #990000;">set_include_path</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">get_include_path</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> PATH_SEPARATOR <span style="color: #339933;">.</span> VENDORS <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Danach kann es auch im Controller schon losgehen:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> view<span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// Die Zend_Pdf Komponente einbinden</span>
	<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Zend/Exception.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Zend/Pdf/Exception.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Zend/Pdf.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// Ein bestehendes PDF öffnen</span>
	<span style="color: #000088;">$pdf</span> <span style="color: #339933;">=</span> Zend_Pdf<span style="color: #339933;">::</span><span style="color: #004000;">load</span><span style="color: #009900;">&#40;</span>VIEWS <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;shares/share_template.pdf&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// Einen Font einrichten und registrieren</span>
	<span style="color: #000088;">$font</span> <span style="color: #339933;">=</span> Zend_Pdf_Font<span style="color: #339933;">::</span><span style="color: #004000;">fontWithName</span><span style="color: #009900;">&#40;</span>Zend_Pdf_Font<span style="color: #339933;">::</span><span style="color: #004000;">FONT_TIMES_ROMAN</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">pages</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setFont</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$font</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// In das PDF schreiben</span>
	<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">pages</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">drawText</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Hello World, how are you doing?&quot;</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">60</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">710</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// Und dann schön speichern (Ausserhalb des Webroot)</span>
	<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">save</span><span style="color: #009900;">&#40;</span>APP<span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;files/shares/&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$id</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;.pdf&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// Einen Media View für die Ausgabe/Download einrichten</span>
	<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">view</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Media'</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$params</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
	       <span style="color: #0000ff;">'id'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$id</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;.pdf&quot;</span><span style="color: #339933;">,</span>
	       <span style="color: #0000ff;">'name'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'HelloWorld'</span><span style="color: #339933;">,</span>
	       <span style="color: #0000ff;">'download'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">,</span>
	       <span style="color: #0000ff;">'extension'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'pdf'</span><span style="color: #339933;">,</span>
	       <span style="color: #0000ff;">'path'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'files'</span> <span style="color: #339933;">.</span> DS <span style="color: #339933;">.</span> <span style="color: #0000ff;">'shares'</span> <span style="color: #339933;">.</span> DS
	<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">set</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$params</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Der Umgang mit der Komponente Zend_Pdf wird <a target="_blank" href="http://framework.zend.com/manual/de/zend.pdf.drawing.html">hier</a> ausführlich erläutert. An dieser Stelle will ich nur den Prozess als ganzes beleuchten. Also&#8230;Ich habe die view Methode eines Controllers so eingerichtet dass nicht mehr HTML ausgeben wird, sondern ein dynamisch beschriebenes PDF.  Was neben der Einbindung des Zend Frameworks noch interessant ist sind die <a target="_blank" href="http://book.cakephp.org/de/view/489/Media-Views">Media Views</a>, die Ihre Entsprechung in der <a target="_blank" href="http://api.rubyonrails.org/classes/ActionController/Streaming.html#M000401">send_file</a> Methode von Ruby On Rails finden.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.php-log.de/150/php/pdf-bearbeiten-mit-zend-framework-in-einer-cakephp-anwendung/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

