Kohana 3 Filter Class $_POST / $_GET

Description of the producer

Here's a class that has come in super handy for me lately. I created it for use with Kohana v3. Basically, say you have an adminstrator backend to your website and you so you have a page for blog posts and one for blog categories. Simple enough. But you wanna give your users options to filter their results so they don't have to search through hundreds or thousands of blog posts every time they wanna find a certain post. Easy enough.

But then you have the problem where the user filters the results, finds the post they want, goes to edit it, then it sends them back to the list of all posts. But whoops, they forgot they wanted to change something else in that same post. Now they have to re-filter all over again and find it. VERY ANNOYING!

So with this class you can provide it with an array of keys to keep track of over multiple page loads. It keeps every controller and actions filters seperate so that you can easily use them throughout your controllers and views. So if you want to filter by 'Author' and 'Category' then the class will look for the keys 'author' and 'category' in either $_POST or $_GET and add them to the filters. Now when the user returns to that page, all filters will still be applied. It's a big time saver!

Kohana 3 :: alternate 404 method


<?php defined('SYSPATH') or die('No direct script access.');

if ( ! $this->_auth->logged_in('login'))
 throw new Kohana_Exception('You are not allowed to view this resource.');

Kohana 3 :: 8 helpers



Kohana 3 :: Kohana Date helper

< ?php defined('SYSPATH') OR die('No direct access allowed.');

 * Extend the Kohana Date helper
class Date extends Kohana_Date {

  * Number of months in a year. Value will hold month name
  * @static
  * @uses    Date::hours
  * @return  array  Array from 1-12 with month names
 public static function months_with_name()
  $months = Date::hours();

  for ($i = 1; $i <= 12; $i++)
   $timestamp = mktime(0, 0, 0, $i, 1, 2005);
   $months[$i] = date("M", $timestamp);

  return $months;

  * Checks whether a string is a date
  * @static
  * @param  string date
  * @return bool
 public static function is_date($str)
  return (boolean) strtotime($str);


// End Date

Kohana 3 :: blog article unique slug

public function save()
 $this->slug = $this->_unique_slug(url::title(empty($this->slug) ? $this->title : $this->slug));
 return parent::save();

private function _unique_slug($str)
 static $i;
 $original = $str;
 while ($post = ORM::factory('post', $str) AND $post->loaded AND $post->id !== $this->id)
  $str = $original.$i;
 return $str;


Kohana 3 :: Writing A Module

In this tutorial we will cover how to build a module from scratch in Kohana 3. If you aren’t familiar with the Kohana framework then I recommend you read the beginners introduction to Kohana.

The Plan

We will be building a module that replaces Kohana’s own view layer (Kohana_View). It will use the PHP template library Twig. We want our own view layer to be API compatible with Kohana’s view layer. This will ensure that other modules work out of the box and that the only code the developer will need to alter in their application are the templates (so that they are Twig compatible). No code in any controller will need to be modified.
Because Kohana follows HMVC (see beginners introduction to Kohana) we will be calling our classView. This means that all calls in the application to the class of View will be to the View class in our module, not Kohana’s own View class.

Kohana 3 :: Example

Kohana 3 :: ORM Simple example

This is a simple example of a single ORM model, that has no relationships, but uses validation on the fields.

SQL schema

  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(32) NOT NULL,
  `firstname` varchar(32) NOT NULL,
  `lastname` varchar(32) NOT NULL,
  `email` varchar(127) DEFAULT NULL,
  PRIMARY KEY (`id`)


Kohana 3 :: Loading Classes

Kohana takes advantage of PHP autoloading. This removes the need to call include or require before using a class. For instance, when you want to use the Cookie::set method, you just call:
Cookie::set('mycookie', 'any string value');
Or to load an Encrypt instance, just call Encrypt::instance: