<?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>TastyCode devblog &#187; KohanaPHP</title>
	<atom:link href="http://blog.tastycode.pl/tag/kohanaphp/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.tastycode.pl</link>
	<description>Just another devblog...</description>
	<lastBuildDate>Fri, 04 Jun 2010 15:52: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>Własna strona błędu 404 w Kohanie</title>
		<link>http://blog.tastycode.pl/2010/03/07/wlasna-strona-bledu-404-w-kohanie/</link>
		<comments>http://blog.tastycode.pl/2010/03/07/wlasna-strona-bledu-404-w-kohanie/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 09:55:07 +0000</pubDate>
		<dc:creator>Informatic</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[KohanaPHP]]></category>
		<category><![CDATA[Komputery]]></category>
		<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.tastycode.pl/?p=112</guid>
		<description><![CDATA[Ostatnio odkryłem prawdziwy "pałer" frameworków. Zacząłem od CodeIgnitera. Całkiem fajny, w większości miejsc daje wolną rękę programiście. Jednak nie wygląda na to, żeby miał być dalej tworzony. Spróbowałem Kohanę, jedną (to ona jest?  ) z jego forków.
Jako że dosłownie zakohałem się w Kohanie, będę co jakiś czas umieszczał tutaj jakieś porady.
Porada na dziś:
Własna strona [...]]]></description>
			<content:encoded><![CDATA[<p>Ostatnio odkryłem prawdziwy "pałer" frameworków. Zacząłem od CodeIgnitera. Całkiem fajny, w większości miejsc daje wolną rękę programiście. Jednak nie wygląda na to, żeby miał być dalej tworzony. Spróbowałem Kohanę, jedną (to ona jest? <img src='http://blog.tastycode.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ) z jego forków.</p>
<p>Jako że dosłownie zakohałem się w Kohanie, będę co jakiś czas umieszczał tutaj jakieś porady.<br />
Porada na dziś:<br />
<b>Własna strona błędu 404 w Kohanie</b><br />
(docelowo pisane na Kohanę 2.3.4, ale na 2.4 też powinno działać)<br />
Wbrew pozorom nie jest to takie trudne! Kohana (tak jak CodeIgniter) ma zaimplementowany system tak zwanych Hooków/Eventów (zdarzeń). Mogę zmienić standardową funkcję obsługi błędu 404, i podmienić ja na moją własną.<br />
Na początku musimy się upewnić, czy mamy w naszej aplikacji włączone hooki. W tym celu otwieramy plik <b>application/config/config.php</b>, i prawdopodobnie <b>w linijce 75</b> będzie znajdować się poniższy kod:</p>
<pre class="brush: php;">$config['enable_hooks'] = FALSE;</pre>
<p>Zmieniamy FALSE na TRUE.<br />
Następnie tworzymy nowy plik <b>application/hooks/error_404.php</b>. Kohana automatycznie wykonuje wszystkie pliki z katalogu <b>application/hooks/</b>, więc nie musimy go jakoś specjalnie włączać <img src='http://blog.tastycode.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
W tym pliku zadeklarujemy klasę przechwytywania błędu (error_404), oraz podmienimy standardową funkcję obsługi błędu 404, na naszą własną z klasy error_404. Nasza funkcja będzie uruchamiać inny, podany w stałej, kontroler.</p>
<pre class="brush: php;">&lt;?php
class error_404 {
	const error_controller = 'Error404'; // Nazwa kontrolera który chcemy wykonywać podczas błędu. (jeżeli mamy kontroler np. w pliku application/controllers/errors/Error404.php, wpisujemy tutaj errors/Error404)
	public static $page = '';

	public static function show_404() { // nasza funkcja przechwytująca błąd 404
		header(&quot;HTTP/1.0 404 Not Found&quot;); // wysyłamy nagłówek ze statusem Not Found.
		if(Router::$current_uri != self::error_controller) { // zabezpieczenie, przed zapętleniem się strony, gdy podany kontroler obsługi błędu nie zostanie znaleziony
			self::$page = Router::$current_uri; // zapisujemy adres brakującej strony, więc możemy w kontrolerze strony błędu wyświetlić jej adres
			Router::$current_uri = self::error_controller; // Przekierowujemy na nasz kontroler
			Router::setup(); // i ponownie inicjalizujemy klasę Router.
		} else {
			Kohana::show_404(self::$page); // gdy nasz kontroler obsługi błędu nie istnieje, wyświetlamy standardową tablicę z Kohany, z adresem strony wcześniej zapisanej do zmiennej $page.
		}
	}
}

Event::replace('system.404', array('Kohana', 'show_404'), array('error_404', 'show_404')); // Podmieniamy standardową funkcję obsługi eventu &quot;system.404&quot;, na naszą.
?&gt;</pre>
<p>Potem musimy zdefiniować nasz kontroler w pliku <b>application/controllers/Error404.php</b>. Nie będzie on się różnił specjalnie od innych, więc nie będę się tutaj specjalnie rozpisywał:</p>
<pre class="brush: php;">&lt;?php
class Error404_Controller extends Controller {
	public function index() {
		echo '&lt;html&gt;&lt;body&gt;&lt;b&gt;404 Not Found&lt;/b&gt;&lt;small&gt; - '.error_404::$page.'&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;&lt;small&gt;Powered by KohanaPHP&lt;/small&gt;&lt;/body&gt;&lt;/html&gt;';
	}
}
?&gt;</pre>
<p>Stay tuned, następne tutoriale już niedługo!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tastycode.pl/2010/03/07/wlasna-strona-bledu-404-w-kohanie/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
