Kohana Demo Application
A simple demo application for those who learn best from simple, working sample code and want to see a sampling of Kohana features in action.
- Reverse Routing
- Templating with Kostache
- Basic Auth, including the ability to manage users. A user has the 'login' role by default and can optionally be assigned the 'admin' role
- Form validation, displaying default error messages for the following cases:
- album name and artist not empty (values are now being trimmed before validation so name => ' ' will now fail)
- album name and artist limited to 80 chars
- album name must be unique for a given artist
- (just using built-in validation for user authentication)
- Custom application error messages
- ORM with MySQL database
- Email notification using Swiftmailer (this requires an email server, but if you don't have one, it's OK -- the application won't break)
- Fetching of album information from LastFM.com (cached using Fragment) (now AJAX-ified)
- Album listing as XML via uri: album/listxml
- Filtering, sorting and pagination performed server-side.
Installing Files Using Git (Recommended)
- create a directory
- open a git bash there
$ git clone git://github.com/ddrake/kohana_demo.git .
$ git fetch
$ git submodule update --init --recursiveIt's a good idea to watch for errors during this step. I've occasionally seen 'fatal: unable to connect a socket (Invalid Argument). If you see something like that, I'd just blow away the directory and start over.
For more information on Git, see the Kohana Git Tutorial
Installing Files Without Git
- Download Kohana v3.1.2
- Install Kohana v3.1.2
- Install the KOstache v2.0.4 module into modules/kostache/
- Delete controller/welcome.php if so desired
- Copy the files in the application directory of this project into 'application'.
- Copy the files in the assets directory of this project into 'assets'.
- Copy the Kostache files from here to modules/kostache
- Copy the Mustche files from here to modules/kostache/vendor/mustache
- Make sure the application/cache and application/logs directories have write access.
- Rename the example.htaccess included with this application to .htaccess and edit the RewriteBase to match your installation directory. For more information see here
- Leave the line
SetEnv KOHANA_ENV developmentas is for now. Later you can change it to production to use the custom error handler.
- Rename application/example.bootstrap.php to bootstrap.php and set base_url to match your installation directory.
- Check that the following modules are enabled in bootstrap.php: auth, orm, database, kostache, email
- Rename application/config/example.auth.php to auth.php and edit it, setting the hash_key to a random string of your choice.
- Create a mysql database
- Rename the application/config/example.database.php to database.php and edit the 'default' section to match the hostname, database and username for the mysql database you created
- Execute the schema in initial_schema.sql in your mysql datase.
- If you want to enable album information from LastFM.com,
- Sign up for a free api key at Last.fm Web Services,
- rename the application/config/example.lastfm.php to lastfm.php and
- edit that file to set the api_key.
- If you're installing to a live server and want to test email notification about a primary user being deleted or having their password changed,
- enable the email module by un-commenting the line in application/bootstrap.php,
- rename aplication/config/example.email.php to email.php and
- edit that file to set the 'to' and 'from' email addresses.
You should be good to go. The default admin login is:
- username: administrator
- password: admin12345
but you can add a new administrator and delete that one if you like.
If you're working in a Windows (WAMP Server) environment, you may also find these useful:
For a much more elaborate example of the capabilities of the Auth module and loads of other useful information, I would recommend
I've borrowed heavily from several sources, including the Kohana site itself and the Unofficial Kohana 3 Wiki site but one other source should probably be mentioned:
Kohana: The Swift PHP Framework This was a Kohana 2 tutorial and its code bears almost no resemblance to that of this project, but I borrowed its simple schema and button images.