<?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>Nasza Kohana &#187; view</title>
	<atom:link href="http://nasza.kohanaphp.pl/tag/view/feed/" rel="self" type="application/rss+xml" />
	<link>http://nasza.kohanaphp.pl</link>
	<description></description>
	<lastBuildDate>Sat, 02 Jan 2010 16:27:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Widoków ciąg dalszy</title>
		<link>http://nasza.kohanaphp.pl/widokow-ciag-dalszy/</link>
		<comments>http://nasza.kohanaphp.pl/widokow-ciag-dalszy/#comments</comments>
		<pubDate>Sun, 29 Mar 2009 13:30:36 +0000</pubDate>
		<dc:creator>Zepco</dc:creator>
				<category><![CDATA[Kurs]]></category>
		<category><![CDATA[template]]></category>
		<category><![CDATA[view]]></category>
		<category><![CDATA[widok]]></category>

		<guid isPermaLink="false">http://nasza.kohanaphp.pl/?p=359</guid>
		<description><![CDATA[Wiemy już jak utworzyć i wyświetlić prosty widok, pora przejść do bardziej złożonych zagadnień.

Fabryka widoków
Poza tworzeniem obiektów poprzez operator new istnieje alternatywna metoda. Jest to wzorzec projektowy nazywany fabryką abstrakcyjną. Więcej o tym wzorcu możesz przeczytać na Wikipedii, my natomiast skupimy się na tym co nam daje takie rozwiązanie w przypadku widoków.
Sam obiekt tworzymy wywołując [...]]]></description>
			<content:encoded><![CDATA[<p>Wiemy już jak utworzyć i wyświetlić prosty widok, pora przejść do bardziej złożonych zagadnień.</p>
<p><span id="more-359"></span></p>
<h1>Fabryka widoków</h1>
<p>Poza tworzeniem obiektów poprzez operator <b>new</b> istnieje alternatywna metoda. Jest to wzorzec projektowy nazywany fabryką abstrakcyjną. Więcej o tym wzorcu możesz przeczytać na <a href="http://pl.wikipedia.org/wiki/Fabryka_abstrakcyjna" target="_blank">Wikipedii</a>, my natomiast skupimy się na tym co nam daje takie rozwiązanie w przypadku widoków.</p>
<p>Sam obiekt tworzymy wywołując statyczną metodę <b>factory()</b> z podobnymi parametrami co konstruktor:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php-brief" style="font-family:monospace;"><span style="color: #0000ff;">$view</span> <span style="color: #339933;">=</span> View<span style="color: #339933;">::</span><span style="color: #004000;">factory</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'home'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Zastanawiasz się pewnie czym to się różni od operatora <b>new</b>, bo przecież oba tworzą i zwracają obiekt klasy View. Oczywiście jest tak, z jedną różnicą. Wywołanie metody fabryki pozwala na łańcuchowanie (chaining) metod tej klasy bezpośrednio po jej utworzeniu.</p>
<p>Tradycyjną metodą:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="php-brief" style="font-family:monospace;"><span style="color: #0000ff;">$view</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> View<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'home'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">$view</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">set</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'title'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Strona główna'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">$view</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">bind</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'news'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$news</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>To samo z użyciem fabryki:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="php-brief" style="font-family:monospace;"><span style="color: #0000ff;">$view</span> <span style="color: #339933;">=</span> View<span style="color: #339933;">::</span><span style="color: #004000;">factory</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'home'</span><span style="color: #009900;">&#41;</span>
	<span style="color: #339933;">-&gt;</span><span style="color: #004000;">set</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'title'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Strona główna'</span><span style="color: #009900;">&#41;</span>
	<span style="color: #339933;">-&gt;</span><span style="color: #004000;">bind</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'news'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$news</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Jak widzisz drugi zapis jest krótszy i bardziej czytelny.</p>
<h1>Rozszerzone dodawanie zmiennych</h2>
<h3>Metoda set()</h3>
<p>W poprzednim artykule zmienne lokalne przekazywaliśmy w poniższy sposób:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php-brief" style="font-family:monospace;"><span style="color: #0000ff;">$view</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">title</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Witaj!'</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Podobne działanie posiada metoda <b>set()</b>, której zapis jest następujący:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="php-brief" style="font-family:monospace;"><span style="color: #0000ff;">$view</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">set</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'title'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Witaj!'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">// lub</span>
<span style="color: #0000ff;">$msg</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Witaj!'</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">$view</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">set</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'title'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$msg</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Jako pierwszy parametr podajemy nazwę zmiennej, której będziemy używać wewnątrz widoku, natomiast drugi parametr jest jej wartością przekazaną bezpośrednio bądź poprzez zmienną.</p>
<h3>Metoda set_global()</h3>
<p>Jak sama nazwa wskazuje, widok otrzymuje zmienną o zasięgu globalnym, przez co może być wykorzystywana zarówno w widoku głównym jednocześnie poprzez jego podwidoki.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php-brief" style="font-family:monospace;"><span style="color: #0000ff;">$view</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">set_global</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'zmienna_widoku'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$zmienna</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Więcej na temat zasięgu zmiennych przeczytasz w dalszej części artykułu.</p>
<h3>Metoda bind()</h3>
<p>Podobnie jak metoda set, bind działa w obrębie widoku, w którym został wywołany. Różnica polega jednak na tym, że zamiast wartości, przekazywana jest referencja do zmiennej. Co to oznacza w praktyce? Spójrz na poniższy przykład:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="php-brief" style="font-family:monospace;"><span style="color: #0000ff;">$sample_var</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">10</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">$view</span> <span style="color: #339933;">=</span> View<span style="color: #339933;">::</span><span style="color: #004000;">factory</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'sample'</span><span style="color: #009900;">&#41;</span>
	<span style="color: #339933;">-&gt;</span><span style="color: #004000;">set</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'sample_set'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$sample_var</span><span style="color: #009900;">&#41;</span>
	<span style="color: #339933;">-&gt;</span><span style="color: #004000;">bind</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'sample_bind'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$sample_var</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">$sample_var</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">20</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">$view</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">render</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">$sample_var</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">30</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Widok:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="php-brief" style="font-family:monospace;">Set = <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #990000;">echo</span> <span style="color: #0000ff;">$sample_set</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;br /&gt;
Bind = <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #990000;">echo</span> <span style="color: #0000ff;">$sample_bind</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>Wynikiem powyższego będzie:</p>
<blockquote><p>Set = 10<br />
Bind = 20</p></blockquote>
<p>W obu przypadkach przekazana została zmienna <code>$sample_var</code>, której wartość początkowa wynosi <code>10</code>. Metoda <b>set</b> przekazała aktualną w danym  momencie wartość zmiennej <code>$sample_var</code> i na tym skończyła się jej rola. Bind natomiast dała wskazanie na samą zmienną, co oznacza, że wszystkie operacje wykonane na  <code>$sample_var</code> po przypisaniu jej do widoku ale przed wywołaniem metody <b>render</b> zostaną uwzględnione a wyświetlona będzie ostatnia zmiana. Można to wykorzystać na przykład w przypadku gdy zmienna jeszcze nie została zainicjowana.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="php-brief" style="font-family:monospace;"><span style="color: #0000ff;">$view</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">bind</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'sample_bind'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$sample_var</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">$sample_var</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">20</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

</p>
<h1>Widoki, podwidoki</h1>
<p>Większość witryn składa się z elementów, które powtarzają się na każdej z podstron: nagłówek z logo, menu, stopka. Natomiast zmianom ulega tylko środkowa część prezentacji. Aby uniknąć ciągłego przepisywania tej samej zawartości do wszystkich widoków, możliwe jest stworzenie widoku głównego, szablonowego, do którego jako zmienna przekazywany jest kolejny widok. Zobrazuję to na przykładowym kodzie:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="php-brief" style="font-family:monospace;"><span style="color: #0000ff;">$view</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> View<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'template'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">$view</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">content</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> View<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'home'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">$view</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">render</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Można to również zapisać następująco:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="php-brief" style="font-family:monospace;"><span style="color: #0000ff;">$view</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> View<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'template'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">$home</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> View<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'home'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">$view</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">content</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$home</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">$view</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">render</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Pamiętaj jednak, że metodę render stosujemy tylko dla widoku bazowego, który jest najwyżej w hierarchii, pozostałe będą  przetwarzane automatyczne.</p>
<p>Przykładowe pliki widoków wyglądają następująco:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="php-brief" style="font-family:monospace;">&lt;!-- application/views/template.php --&gt;
&lt;html&gt;
&lt;body&gt;
	<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #990000;">echo</span> <span style="color: #0000ff;">$content</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
&lt;/body&gt;
&lt;/html&gt;</pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="php-brief" style="font-family:monospace;"><span style="color: #339933;">&lt;!--</span> application<span style="color: #339933;">/</span>views<span style="color: #339933;">/</span>home<span style="color: #339933;">.</span>php <span style="color: #339933;">--&gt;</span>
<span style="color: #004000;">Witaj</span><span style="color: #339933;">,</span> jestem Kohany<span style="color: #009900;">&#40;</span>m<span style="color: #009900;">&#41;</span> widokiem<span style="color: #339933;">!</span></pre></td></tr></table></div>

<p>Efektem powyższych operacji będzie następujący kod html postaci:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">&lt;!-- application/views/template.php --&gt;
&lt;html&gt;
&lt;body&gt;
	&lt;!-- application/views/home.php --&gt;
	Witaj, jestem Kohany(m) widokiem!
&lt;/body&gt;
&lt;/html&gt;</pre></td></tr></table></div>

<p>Co w oknie przeglądarki przełoży się na napis znany już z poprzedniej części kursu:</p>
<blockquote><p>Witaj, jestem Kohany(m) widokiem!</p></blockquote>
<h1>Zasięg zmiennych</h1>
<h3>Lokalne</h3>
<p>Zmienna ustawiona poprzez metodę <b>set()</b> bądź poprzez bezpośrednie przypisanie zmiennej do obiektu działa tylko w obrębie danego widoku i nie jest widoczny poza niego. Czyli jeśli utworzymy dwa widoki, np. widok1 oraz widok2 i w obu przypiszemy zmienną o tej samej nazwie, np. $zmienna, to będą to dwie odseparowane od siebie wartości.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="php-brief" style="font-family:monospace;"><span style="color: #0000ff;">$view1</span> <span style="color: #339933;">=</span> View<span style="color: #339933;">::</span><span style="color: #004000;">factory</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'widok1'</span><span style="color: #009900;">&#41;</span>
	<span style="color: #339933;">-&gt;</span><span style="color: #004000;">set</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'zmienna'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'pierwszy'</span><span style="color: #009900;">&#41;</span>
	<span style="color: #339933;">-&gt;</span><span style="color: #004000;">render</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #0000ff;">$view2</span> <span style="color: #339933;">=</span> View<span style="color: #339933;">::</span><span style="color: #004000;">factory</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'widok2'</span><span style="color: #009900;">&#41;</span>
	<span style="color: #339933;">-&gt;</span><span style="color: #004000;">set</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'zmienna'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'drugi'</span><span style="color: #009900;">&#41;</span>
	<span style="color: #339933;">-&gt;</span><span style="color: #004000;">render</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<h3>Globalne</h3>
<p>W przypadku użycia metody <b>set_global()</b> zmienna ustawiona będzie dostępna w każdym widoku.<br />
Przykładowo mamy w kontrolerze widok $view i dla niego przypisaną zmienną globalną <code>$test_var</code></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="php-brief" style="font-family:monospace;"><span style="color: #0000ff;">$view</span> <span style="color: #339933;">=</span> View<span style="color: #339933;">::</span><span style="color: #004000;">factory</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'view_test'</span><span style="color: #009900;">&#41;</span>
	<span style="color: #339933;">-&gt;</span><span style="color: #004000;">set_global</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'test_var'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Test!'</span><span style="color: #009900;">&#41;</span>
	<span style="color: #339933;">-&gt;</span><span style="color: #004000;">set</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'test1'</span><span style="color: #339933;">,</span> View<span style="color: #339933;">::</span><span style="color: #004000;">factory</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'test1'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #339933;">-&gt;</span><span style="color: #004000;">set</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'test2'</span><span style="color: #339933;">,</span> View<span style="color: #339933;">::</span><span style="color: #004000;">factory</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'test2'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #339933;">-&gt;</span><span style="color: #004000;">render</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">TRUE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Oraz widoki:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">&lt;!-- application/views/view_test.php --&gt;
	&lt;?php echo $test_var ?&gt;&lt;br /&gt;	&lt;!-- wyświetla zmienną w widoku głównym --&gt;
	&lt;?php echo $test1 ?&gt;&lt;br /&gt;	&lt;!-- wyświetla podwidok test1 --&gt;
	&lt;?php echo $test2 ?&gt;&lt;br /&gt;	&lt;!-- wyświetla podwidok test2 --&gt;</pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">&lt;!-- application/views/test1.php --&gt;
&lt;?php echo $test_var ?&gt;</pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">&lt;!-- application/views/test2.php --&gt;
&lt;?php echo $test_var ?&gt;</pre></td></tr></table></div>

<p>Efektem tych poleceń jest wyświetlenie 3 razy tej samej zmiennej <code>$test_var</code>.</p>
<blockquote><p>
Test!<br />
Test!<br />
Test!
</p></blockquote>
<h3>Dostęp poprzez $this</h3>
<p>Widoki w Kohanie są tak skonstruowane, że zawierają się w tej samej przestrzeni nazw co kontroler je wykonujący. Daje to nam dostęp do pól i metod tego kontrolera poprzez zmienną <b>$this</b>.</p>
<p>Przykładowo mamy kontroler test:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="php-brief" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> Test_Controller <span style="color: #000000; font-weight: bold;">extends</span> Controller <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #0000ff;">$sample_var</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Hello!'</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> index<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #0000ff;">$view</span> <span style="color: #339933;">=</span> View<span style="color: #339933;">::</span><span style="color: #004000;">factory</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'test'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">render</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Oraz widok test.php:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php-brief" style="font-family:monospace;">Zmienna sample_var = <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #990000;">echo</span> <span style="color: #0000ff;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">sample_var</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>Wykonanie powyższego kontrolera da nam wynik:</p>
<blockquote><p>Zmienna sample var = Hello!</p></blockquote>
<p>Ta metoda dostępu do danych nie jest zalecani można ją powodzeniem zastąpić wcześniej wymienionymi metodami: <b>set()</b>, <b>set_global()</b>, <b>bind()</b>.</p>
<h1>Pozostałe operacje na widokach</h1>
<h3> Metoda set_filename()</h3>
<p>Metoda <b>set_filename()</b> pozwala na przypisanie pliku do widoku w przypadku gdy nie został on podany w momencie tworzenia obiektu, bądź zmianę wcześniej przypisanej nazwy.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="php-brief" style="font-family:monospace;"><span style="color: #0000ff;">$view</span> <span style="color: #339933;">=</span> View<span style="color: #339933;">::</span><span style="color: #004000;">factory</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #339933;">-&gt;</span><span style="color: #004000;">set</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'title'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Witaj!'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #339933;">...</span>
<span style="color: #0000ff;">$view</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">set_filename</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'template'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">$view</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">render</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">TRUE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="php-brief" style="font-family:monospace;"><span style="color: #0000ff;">$view</span> <span style="color: #339933;">=</span> View<span style="color: #339933;">::</span><span style="color: #004000;">factory</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'template'</span><span style="color: #009900;">&#41;</span>
	<span style="color: #339933;">-&gt;</span><span style="color: #004000;">set</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'title'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Witaj!'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #339933;">...</span>
<span style="color: #0000ff;">$view</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">set_filename</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'another_template'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">$view</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">render</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">TRUE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Wszystkie zmienne przypisane do widoku będą użyte w ostatnio przypisanej nazwie pliku i ten plik widoku zostanie wyświetlony.</p>
<p>Z powyższej metody można korzystać na przykład w przypadku sprawdzania czy jest ktoś zalogowany. Jeśli warunek będzie spełniony zostanie utworzony widok z interesującymi nas danymi. W przeciwnym wypadku nazwa pliku zostanie zmieniona na widok z komunikatem błędu.</p>
</pre>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code"><pre class="php-brief" style="font-family:monospace;"><span style="color: #0000ff;">$view</span> <span style="color: #339933;">=</span> View<span style="color: #339933;">::</span><span style="color: #004000;">factory</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'template'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">// sprawdź czy użytkownik jest zalogowany</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$logged_in</span><span style="color: #009900;">&#41;</span>
<span style="color: #666666; font-style: italic;">// jeśli tak, wykonaj operacje na widoku</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #0000ff;">$view</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">set</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'title'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Tajne dane'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #339933;">...</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">else</span>
<span style="color: #666666; font-style: italic;">// jeśli nie, pokaż komunikat błędu</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #0000ff;">$view</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">set_filename</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'not_logged'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #0000ff;">$view</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">render</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">TRUE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<h3>Metoda is_set()</h3>
<p>Jeśli nie masz pewności czy dana zmienna została przypisana już do widoku, to można to sprawdzić właśnie za pomocą metody <b>is_set()</b>. Wystarczy podać jako parametr nazwę zmiennej a funkcja sprawdzi czy jest zmienną lokalną danego widoku bądź też globalną dla wszystkich. Jako wynik otrzymasz wartość logiczną.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code"><pre class="php-brief" style="font-family:monospace;"><span style="color: #0000ff;">$view</span> <span style="color: #339933;">=</span> View<span style="color: #339933;">::</span><span style="color: #004000;">factory</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'sample_view'</span><span style="color: #009900;">&#41;</span>
	<span style="color: #339933;">-&gt;</span><span style="color: #004000;">set</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'sample_var'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Kohana'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$view</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">is_set</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'sample_var'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #990000;">echo</span> <span style="color: #0000ff;">'Zmienna istnieje!'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">else</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #990000;">echo</span> <span style="color: #0000ff;">'Zmienna nie istnieje!'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Ponieważ wcześniej zadeklarowaliśmy zmienną <code>sample_var</code>, to metoda <b>is_set()</b> zwróci wartość logiczną <b>true</b>, w wyniku czego otrzymamy komunikat:</p>
<blockquote><p>Zmienna istnieje!</p></blockquote>
<p>Możliwe jest też sprawdzenie kilku zmiennych na raz, wtedy jako parametr podajemy tablicę z ich nazwami</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="php-brief" style="font-family:monospace;"><span style="color: #0000ff;">$view</span> <span style="color: #339933;">=</span> View<span style="color: #339933;">::</span><span style="color: #004000;">factory</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'sample_view'</span><span style="color: #009900;">&#41;</span>
	<span style="color: #339933;">-&gt;</span><span style="color: #004000;">set</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'sample_var'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Kohana'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #990000;">echo</span> Kohana<span style="color: #339933;">::</span><span style="color: #004000;">debug</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$view</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">is_set</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'sample_var'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'another_var'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Wynik:</p>
<blockquote><p>(array) Array<br />
(<br />
	[sample_var] => 1<br />
	[another_var] =><br />
)
</p></blockquote>
<p>Jak widać powyżej metoda <b>is_set()</b> zwróci tablicę, gdzie kluczem jest nazwa zmiennej, któremu przypisana będzie wartość logiczna mówiąca o istnieniu danej zmiennej.</p>
]]></content:encoded>
			<wfw:commentRss>http://nasza.kohanaphp.pl/widokow-ciag-dalszy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Widok</title>
		<link>http://nasza.kohanaphp.pl/widok/</link>
		<comments>http://nasza.kohanaphp.pl/widok/#comments</comments>
		<pubDate>Mon, 23 Mar 2009 00:09:13 +0000</pubDate>
		<dc:creator>Zepco</dc:creator>
				<category><![CDATA[Kurs]]></category>
		<category><![CDATA[view]]></category>
		<category><![CDATA[widok]]></category>

		<guid isPermaLink="false">http://nasza.kohanaphp.pl/?p=288</guid>
		<description><![CDATA[Jak zapewne już wiesz, według wzorca MVC nie wolno wyświetlać danych bezpośrednio w kontrolerze. Ta działka należy do widoków (views), którymi zajmiemy się w tej części artykułu.

Tworzenie prostego widoku
Za operacje na widokach odpowiedzialna jest klasa View, zatem, aby powstał widok wystarczy stworzyć obiekt tej klasy.

$widok = new View;

Konstruktor View może przyjmować do trzech parametrów:


		nazwa pliku [...]]]></description>
			<content:encoded><![CDATA[<p>Jak zapewne już wiesz, według wzorca MVC nie wolno wyświetlać danych bezpośrednio w kontrolerze. Ta działka należy do widoków (views), którymi zajmiemy się w tej części artykułu.</p>
<p><span id="more-288"></span></p>
<h1>Tworzenie prostego widoku</h1>
<p>Za operacje na widokach odpowiedzialna jest klasa View, zatem, aby powstał widok wystarczy stworzyć obiekt tej klasy.</p>

<div class="wp_syntax"><div class="code"><pre class="php-brief" style="font-family:monospace;"><span style="color: #0000ff;">$widok</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> View<span style="color: #339933;">;</span></pre></div></div>

<p style="margin-bottom: 0cm;">Konstruktor View może przyjmować do trzech parametrów:</p>
<ol>
<li>
		<b>nazwa pliku</b> – nazwa pliku widoku bez rozszerzenia (patrz parametr rozszerzenie), należy pamiętać, że nie może ona zawierać rozszerzenia pliku;
	</li>
<li>
		<b>dane</b> – zmienne w formie tablicy, które będą użyte w widoku;
	</li>
<li>
		<b>rozszerzenie</b> – standardowym rozszerzeniem plików widoków jest <em>.php</em>, ale parametr ten pozwala na wczytanie pliku o innym rozszerzeniu, np. <em>.tpl, .html </em><span style="font-style: normal;">etc.</span>.
	</li>
</ol>
<p style="margin-bottom: 0cm;">W związku z powyższym istnieją jeszcze 4 warianty na utworzenie widoku:</p>
<ol>
<li> sam widok o nazwie pliku 	moj_widok.php

<div class="wp_syntax"><div class="code"><pre class="php-brief" style="font-family:monospace;"><span style="color: #0000ff;">$view</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> View<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'moj_widok'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

</li>
<li>
		widok z przekazanymi danymi z tablicy $dane</p>

<div class="wp_syntax"><div class="code"><pre class="php-brief" style="font-family:monospace;"><span style="color: #0000ff;">$view</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> View<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'moj_widok'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$dane</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

</li>
<li>
		widok o nazwie pliku moj_widok.html z danymi</p>

<div class="wp_syntax"><div class="code"><pre class="php-brief" style="font-family:monospace;"><span style="color: #0000ff;">$view</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> View<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'moj_widok'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$dane</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'html'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

</li>
<li>
		widok o nazwie pliku moj_widok.html bez danych</p>

<div class="wp_syntax"><div class="code"><pre class="php-brief" style="font-family:monospace;"><span style="color: #0000ff;">$view</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> View<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'moj_widok'</span><span style="color: #339933;">,</span> <span style="color: #000000; font-weight: bold;">null</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'html'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

</li>
</ol>
<h1 class="western">Gdzie znajdują się pliki widoku?</h1>
<p>Pliki widoku znajdują się w katalogu <em>views</em>. Zgodnie ze wspomnianym wcześniej kaskadowym systemem plików może to być system/views, models/[nazwa modelu]/views, application/views.</p>
<p>W przypadku naszej aplikacji będziemy umieszczać je w ostatnim z wymienionych katalogów, czyli application/views. Widoki mogą być także zawarte w podkatalogach katalogu views, wtedy przy tworzeniu obiektu należy podać względną ścieżkę do pliku, np.:</p>

<div class="wp_syntax"><div class="code"><pre class="php-brief" style="font-family:monospace;"><span style="color: #0000ff;">$widok</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> View<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'podkatalog/moj_widok'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p style="margin-bottom: 0cm;"><span style="font-style: normal;">Zatem utwórzmy plik home.php w katalogu application/views. Dla przykładu umieścimy tam zmodyfikowany tekst kontrolera z poprzedniego wpisu.</span></p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">Witam - jestem Kohany(m) widokiem! :)</pre></div></div>

<h1>Wyświetlenie widoku</h1>
<p>No dobrze, wiemy jak utworzyć widok, wiemy gdzie go umieścić, ale żeby zobaczyć efekt należy go jeszcze wyświetlić.</p>
<p>Do tego celu służy metoda <b>render()</b>.</p>
<p>Metoda ta przyjmuje dwa parametry. Drugi chwilowo możemy pominąć <img src='http://nasza.kohanaphp.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Pierwszy z nich natomiast jest wartością logiczną decydującą o tym czy wysłać bezpośrednio zawartość widoku do przeglądarki, np.</p>

<div class="wp_syntax"><div class="code"><pre class="php-brief" style="font-family:monospace;"><span style="color: #0000ff;">$view</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">render</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Spowoduje wyświetlenie widoku bez dodatkowych zabiegów, natomiast taki zapis</p>

<div class="wp_syntax"><div class="code"><pre class="php-brief" style="font-family:monospace;"><span style="color: #0000ff;">$output</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$view</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">render</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">// lub $output = $view-&gt;render(false)</span>
<span style="color: #990000;">echo</span> <span style="color: #0000ff;">$output</span> <span style="color: #666666; font-style: italic;">// dopiero tutaj wyświetlamy widok</span></pre></div></div>

<p>spowoduje przekazanie zawartości widoku do zmiennej $output ale nie wysyła go do przeglądarki, dopiero później (np. za pomocą funkcji echo) możemy ja wyświetlić.</p>
<p>Jak to w praktyce będzie wyglądać? Posłużymy się wcześniej utworzonym kontrolerem home.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="php-brief" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #990000;">defined</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'SYSPATH'</span><span style="color: #009900;">&#41;</span> OR <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'No direct access allowed.'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">class</span> Home_Controller <span style="color: #000000; font-weight: bold;">extends</span> Controller <span style="color: #009900;">&#123;</span>
&nbsp;
        <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> index<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
		<span style="color: #0000ff;">$view</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> View<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'home'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #0000ff;">$view</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">render</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Powyższy kod spowoduje wyświetlenie napisu z naszego widoku, czyli:</p>
<blockquote><p>Witam &#8211; jestem Kohany(m) widokiem! <img src='http://nasza.kohanaphp.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p></blockquote>
<h1>Dodanie zmiennych</h1>
<p>Widok już mamy, pora by stał się bardziej dynamiczny. Przekażmy mu jakieś dane do wyświetlenia.<br />
Dane do widoku przekazujemy tak, jakbyśmy chcieli zapisać jakąś wartość własności obiektu.</p>
<p>Na przykład, mamy widok $view i chcemy mu utworzyć zmienną $title o wartości „Witaj!”. Nic prostszego!</p>

<div class="wp_syntax"><div class="code"><pre class="php-brief" style="font-family:monospace;"><span style="color: #0000ff;">$view</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">title</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Witaj!'</span><span style="color: #339933;">;</span></pre></div></div>

<p>Podobnie można postąpić w przypadku tablic:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code"><pre class="php-brief" style="font-family:monospace;"><span style="color: #0000ff;">$view</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">articles</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
	<span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
		<span style="color: #0000ff;">'title'</span>		<span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'Pierwszy wpis'</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'content'</span>	<span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'author'</span>	<span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'Kohana'</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'date'</span> 		<span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'22-03-2009'</span><span style="color: #339933;">,</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: #0000ff;">'title'</span>		<span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'Kolejny wpis'</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'content'</span>	<span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'Nulla et massa vitae erat placerat consequat.'</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'author'</span>	<span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'Kohana'</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'date'</span> 		<span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'23-03-2009'</span><span style="color: #339933;">,</span>
	<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<h1>Wyświetlanie zmiennych</h1>
<p>Widoki w Kohanie są zwykłymi plikami PHP, także wyświetlanie zmiennych nie wymaga specjalnych zabiegów czy też dodatkowych znaczników.<br />
W przypadku powyższych zmiennych będzie to wyglądało następująco:</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-brief" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #990000;">echo</span> <span style="color: #0000ff;">$title</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;
&lt;h1&gt;Artykuły&lt;/h1&gt;
&nbsp;
<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$articles</span> <span style="color: #b1b100;">as</span> <span style="color: #0000ff;">$article</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
	&lt;h2&gt;<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #990000;">echo</span> <span style="color: #0000ff;">$article</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'title'</span><span style="color: #009900;">&#93;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/h2&gt;
	&lt;h3&gt;Autor: <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #990000;">echo</span> <span style="color: #0000ff;">$article</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'author'</span><span style="color: #009900;">&#93;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/h3&gt;
	&lt;h4&gt;Data: <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #990000;">echo</span> <span style="color: #0000ff;">$article</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'date'</span><span style="color: #009900;">&#93;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/h4&gt;
	&lt;p&gt;<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #990000;">echo</span> <span style="color: #0000ff;">$article</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'content'</span><span style="color: #009900;">&#93;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/p&gt;
<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>Czego efektem będzie poniższy wydruk:</p>
<blockquote><p>
Witaj!</p>
<h1>Artykuły</h1>
<h2>Pierwszy wpis</h2>
<h3>Autor: Kohana</h3>
<h4>Data: 22-03-2009</h4>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<h2>Kolejny wpis</h2>
<h3>Autor: Kohana</h3>
<h4>Data: 23-03-2009</h4>
<p>Nulla et massa vitae erat placerat consequat.</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://nasza.kohanaphp.pl/widok/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
