vojtech-dobes/nette-forms-inputlist

Alternative RadioList & CheckboxList for Nette Framework

1.0.4 2013-04-04 00:01 UTC

This package is not auto-updated.

Last update: 2024-12-21 14:02:20 UTC


README

Alternative RadioList & CheckboxList for Nette Framework

License

New BSD

Dependencies

Nette 2.0.0

Installation

  1. Get the source code from Github or via Composer (vojtech-dobes/nette-forms-inputlist).
  2. Register VojtechDobes\NetteForms\InputListExtension as extension for $configurator.
$configurator->onCompile[] = function ($configurator, $compiler) {
	$compiler->addExtension('inputlist', new VojtechDobes\NetteForms\InputListExtension);
};

Usage

RadioList

$form->addMultiRadio('sex', 'Sex:', array(
	'male' => 'Male',
	'female' => 'Female',
));

Method's name was chosen to not interfere with native addRadiolist.

CheckboxList

$checkboxlist = $form->addMultiCheckbox('topics', 'I like:', array(
	'l' => 'lifestyle',
	'm' => 'military',
	'c' => 'computers',
	'f' => 'flowers',
));
Defaults
$checkboxlist->setDefaultValue(array('l', 'm')); // lifestyle, military
Returned values
$checkboxlist->getValue() === array(0 => 'l', 1 => 'm')

Rendering

Automatic

Both RadioList and CheckboxList provide standard mechanism like getControlPrototype etc. You can also force omitting of last separator:

$radiolist->omitLastSeparator();

Manual

There is special new macro for Latte templates: {inputlist}. It behaves exactly like {foreach}, but it's specifically design to work with *List form elements.

{form formName}
	{inputlist sex as $key => $label}
		{input} {label /} {sep}<br>{/sep}
	{/inputlist}
{/form}

Macros {input} and {label} behave the same way as always, but when used without element identificator, they will render proper elements for iteration specific item. If you use it with identificator, it will render appropriate element from form.

{form formName}
	{inputlist sex as $key => $label}
		{input} {label /}<br>
		{input send} {* standard button, no problem *}
	{/inputlist}
{/form}

You can add HTML attributes to them as usually.

{form formName}
	{inputlist sex as $key => $label}
		{input class => 'input-radio'} {label}{$label}{/label}<br>
	{/inputlist}
{/form}

Attribute version of {inputlist} is also possible:

{form formName}
	<ul n:inner-inputlist="sex as $key => $label">
		<li>{input} {label /}</li>
	</ul>
{/form}

Validation

Here supported rules are listed:

CheckboxList

RadioList

All rules are also supported on client-side.