Skip to content

Instantly share code, notes, and snippets.

@isaiahdw
Created December 15, 2008 22:59
Show Gist options
  • Save isaiahdw/36146 to your computer and use it in GitHub Desktop.
Save isaiahdw/36146 to your computer and use it in GitHub Desktop.
class form extends form_core {
public static $errors = array();
public static $form_data = array();
public static $lang_key;
public static function open($attr = array(), $lang_key = '', $errors = array(), $form_data = array(), $hidden = NULL)
{
is_string($attr) AND $attr = array('action' => $attr);
self::$errors = $errors;
self::$lang_key = $lang_key;
self::$form_data = $form_data;
$action = $attr['action'];
unset($attr['action']);
return parent::open($action, $attr, $hidden);
}
public static function errors($title = 'Oops there was an error!')
{
if (empty(self::$errors) OR ! is_array(self::$errors))
return '';
$output = '<div class="form_errors"><h3>'.$title.'</h3><ul>';
foreach(self::$errors AS $key => $error)
{
$error = Kohana::lang(self::$lang_key.'.'.$key.'.'.$error);
$output .= '<li>'.html::anchor('#'.$key, $error).'</li>';
}
return $output.'</ul></div>';
}
public static function label($text = '', $data = '', $extra = '')
{
// Do we need to call Kohana::lang()?
$text = (strpos($text, '.') === 0) ? Kohana::lang(self::$lang_key.$text) : $text;
if ( ! is_string($data))
{
isset($data['for']) AND $field_name = $data['for'];
// Use the name if we have one
isset($data['name']) AND $field_name = $data['name'];
}
else
{
$field_name = $data;
}
// Display the errors
if (isset($field_name) AND ! empty(self::$errors[$field_name]))
$text = '<a name="'.$field_name.'">'.$text.'</a> - <span class="error">'.Kohana::lang(self::$lang_key.'.'.$field_name.'.'.self::$errors[$field_name]).'</span>';
return parent::label($data, $text, $extra);
}
/**
* Creates an HTML form input tag. Defaults to a text type.
*
* @param string|array input name or an array of HTML attributes
* @param string input value, when using a name
* @param array array of error messages
* @return string
*/
public static function input($data, $value = NULL)
{
if ( ! is_array($data))
{
$data = array('name' => $data);
}
// Set the automatic value if there is one
$data['value'] = (isset(self::$form_data[$data['name']]) AND $value === NULL) ? self::$form_data[$data['name']] : $value;
// Default class
! isset($data['class']) AND $data['class'] = 'long';
isset(self::$errors[$data['name']]) AND $data['class'] = $data['class'].' error';
return parent::input($data, $value);
}
public static function password($data, $value = '')
{
if ( ! is_array($data))
{
$data = array('name' => $data);
}
$data['type'] = 'password';
return self::input($data, $value);
}
}
<?=form::open('admin/members/add/', 'members.add.form', $errors)?>
<fieldset class="ujstyle">
<div class="spacer w99">
<div class="block left padding">
<?=form::label('.display_name.label', 'display_name')?>
<?=form::input('display_name', $form['display_name'])?>
</div>
<div class="block left padding">
<?=form::label('.username.label', 'username')?>
<?=form::input('username', $form['username'])?>
</div>
<div class="block left padding">
<?=form::label('.email.label', 'email')?>
<?=form::input('email', $form['email'])?>
</div>
<div class="block left padding">
<?=form::label('.password.label', 'password')?>
<?=form::password('password', '')?>
</div>
<div class="block left padding">
<?=form::label('.password2.label', 'password2')?>
<?=form::password('password2', '')?>
</div>
</div>
</fieldset>
<p class="right"><?=form::submit('submit', Kohana::lang('members.form.save'))?></p>
</form>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment