1.4.0 2017-06-26 02:40 UTC



Build Status Latest Stable Version Total Downloads Latest Unstable Version License Monthly Downloads Daily Downloads

With FormKit library, you can integrate form widgets with your own frameworks,

And of course, you can define your own form widgets for your applications easily.

Tired with HTML forms ? There are some widget layout engines that can render widget into HTML with HTML table or fieldsets/legends. Of course you can define your own layout engine too!


composer require corneltek/formkit "^1.3"


To use a text input widget:

$text = new FormKit\Widget\TextInput('username', array( 
    'label' => 'Username',
    'placeholder' => 'Your name please',
    'hint'  => 'Please enter 6 characters for your username',
$text->value( 'default' )

echo $text; // render 

Which outputs:

<input type="text" name="username" value="default" placeholder="Your name please" size="20"/>
<div class="formkit-hint">Please enter 6 characters for your username</div>


/* selector with group options */
$countries = new FormKit\Widget\SelectInput( 'country' , array(
    'label' => 'Country',
    'options' => array(
        'Test' => 'Test',
        'Asia' => array( 

Element API

use FormKit\Element;
$ul = new Element('ul');
$li = new Element('li');

$li->append( new Element('a') );
$li->appendText( "DOMText Node here" );



echo $li->render();


To use generic layout:

$layout = new FormKit\Layout\GenericLayout;
$layout->addWidget( $text )
    ->addWidget( $password )
    ->addWidget( $remember )
    ->addWidget( $birthday )
    ->addWidget( $best_time )
    ->addWidget( $role )
    ->addWidget( $size )
    ->addWidget( $countries )
echo $layout;

Widget Factory

Form Widget Factory:

use FormKit\FormKit;
$username = FormKit::text('username');
$password = FormKit::password('password',array( 
    'class' => 'your-element-class-name',
    'id' =>  'your-element-id',
    'value' => 'default password',

echo $username->render();
echo $password->render();

Open Tag & Close Tag

$form = new FormKit\Element\Form(array(
    'class' => 'blah blah'

// render elements manully
echo $form->open();
echo $form->renderChildren();
echo $form->close();

// which is equal to
echo $form->render();

Availabel Form Widgets

  • TextareaInput
  • TextInput
  • ButtonInput
  • CheckboxInput
  • ColorInput
  • DateInput
  • DatetimeInput
  • FileInput
  • HiddenInput
  • Label
  • PasswordInput
  • RadioInput
  • ResetInput
  • SelectInput
  • SubmitInput
  • AjaxCompleteInput
  • CanvasInput


Install assets for demo:

$ assetkit install


MIT License