Nahrazení pole pro soubor checkboxem pro smazání

- Lawondyss
 - Člen | 106
 
Používám vlastní funkci, která vytvoří kontejner s více poli pro soubor.
<?php
/**
 * Formularova pole pro soubory
 */
public static function addFilesUpload(Form $form, $name, $label, $count=1)
{
	$files = $form->addContainer($name);
	$label_counter = $label;
	for($i=1; $i<=$count; $i++)
	{
		// vypise poradi pouze pro vice priloh
		if($count > 1)
		{
			$label_counter = $label.' '.$i;
		}
			$files->addFile($i, $label_counter);
	}
	return $files;
}
?>
Jenže nevím, jak udělat to, aby se automaticky pole pro soubor nahradilo checkboxem, kterým po zaškrtnutí spustí smazání daného souboru.
Inspiroval jsem se v tomto postu, ale rád bych to automatizoval. Není možno předat funkci uložené soubory (jejich názvy uložení v DB) jako defaultní hodnotu? Zatím musím checkboxy generovat ručně.
<?php
$files = explode(':', $defaults['priloha']);
foreach($files as $key => $file)
{
	$div = NHtml::el('div');
	$div->create('input', array(
		'type' => 'checkbox',
		'name' => 'deleted['.$file.']',
	))
		->setText('smazat '.$file);
	$deleted[] = $div;
}
?>
A pak to předat upravené funkci
<?php
/**
 * Formularova pole pro soubory
 */
public static function addFilesUpload(Form $form, $name, $label, $deleted, $count=1)
{
	$files = $form->addContainer($name);
	$label_counter = $label;
	for($i=1; $i<=$count; $i++)
	{
		// vypise poradi pouze pro vice priloh
		if($count > 1)
		{
			$label_counter = $label.' '.$i;
		}
		if($deleted[$i-1])
		{
			$files->addFile($i, $label_counter)
				->setOption('description', $deleted[$i-1])
				->setDisabled(TRUE)
				->getControlPrototype()
					->style['display'] = 'none';
		}
		else
		{
			$files->addFile($i, $label_counter);
		}
	}
	return $files;
}
?>
				
- Lawondyss
 - Člen | 106
 
Nakonec jsem to vyřešil předáním „výchozí“ hodnoty.
<?php
/**
 * Formularova pole pro soubory
 */
public static function addFilesUpload(Form $form, $name, $label, $default, $count=1)
{
        $container= $form->addContainer($name);
        $label_counter = $label;
	$deleted = explode(':', $default);
        for($i=0; $i<$count; $i++)
        {
                // vypise poradi pouze pro vice priloh
                if($count > 1)
                {
                        $label_counter = $label.' '.($i+1);
                }
		// smazat soubor
		if(isset($deleted[$i]))
		{
			$container->addCheckbox($i, 'smazat '.$label_counter);
		}
		// nahrat novy soubor
		else
		{
			$container->addFile($i, $label_counter);
		}
        }
        return $container;
}
?>
Ovšem narazil jsem tím na jiný problém, se kterým nemůžu hnout.
Nepoužívám MVP a po odeslání formuláře už znova nepřesměrovávám.
No a pak mi zůstávají v prázdném formuláři „vyset“ checkboxy
z minulého stavu. U polí, která mají mít znova výchozí stav to řeším
nastavením $form->setValues(array(...), TRUE), jenže tohle
řešení nefunguje pro tento kontejner.