Skip to content
This repository has been archived by the owner on Mar 5, 2021. It is now read-only.


Folders and files

Last commit message
Last commit date

Latest commit



43 Commits

Repository files navigation

Kohana FormManager

This module allows you to create reusable forms that are self contained. You can tie it to a ORM model, or roll your own.

The bundled view templates are marked up to work out of the box with the Bootstrap CSS toolkit from Twitter, but you can override these and use your own markup as needed.


Once you've created your form class (see below), you can display it with:

$form = new Form_Login();
echo $form->render();

You'll likely want to pass the form into the view where you can call ->render() or assign the result of ->render() to a view variable.

Roll your own

class Form_Login extends FormManager {
	protected function setup() {
		$this->add_field('password', array('display_as' => 'password');
		$this->rule('username', 'not_empty');
		$this->rule('password', 'not_empty');
	public function submit() {
		$success = parent::submit();
		if (!success) return false;
		$values = $this->get_input();

		$auth = Auth::instance();
		$success = $auth->login($values['username'], $values['password']);
		if (!$success) {
			$this->values['username']['error'] = true;
			$this->values['username']['error_text'] = 'Your username or password were not recognised.';

Associated with a model

The basics of what you require to create a form for a model is

class Form_Profile extends FormManager {
	protected $model = 'user';

However you're likely to want to tweak the form a bit, and do something with the data that's submitted.

class Form_Profile extends FormManager {

	protected $model = 'user';

	// These fields are irrelevant in the form
	protected $exclude_fields = array('logins', 'last_login');

	protected function setup() {
		$this->add_field('password_confirm', array('display_as' => 'password'), 'after', 'password');
		$this->fields['password']['display_as'] = 'password';
		$this->rule('password_confirm', 'matches', array(':validation', 'password', ':field'));
		$this->set_value('password', '');
		$this->set_value('password_confirm', '');


	public function submit() {

		// Ensure current user has permissions to edit
		$auth = Auth::instance();
		$user = $auth->get_user();
		if ($user->id != $this->object->id) {
			return false;

		$success = parent::submit();

		if ($success) {

		return $success;



Note; the FormManager class does not automatically call ->save_object() during ->submit().

To Do

  • Refactor or rewrite. I've tacked things on as I've gone and it's getting a bit unwieldy. Need to get all the additional features in there in a more logical form.
  • Documentation!


No description, website, or topics provided.






No releases published


No packages published