RadioList v tabulke
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Jod
- Člen | 701
Ano, ano ale ako som pozeral zatiaľ tam nič také neni. Ten separátor sa dá zmeniť cez getSeparatorPrototype().
Poriešil som to následujúcim spôsobom:
<?php
function RadioList_prototype_getMyControl(RadioList $_this)
{
$_this->setOption('rendered', TRUE);
$control = clone $_this->getControlPrototype();
$control->name = $_this->getHtmlName();
$control->disabled = $_this->disabled;
$control->id = $_this->getHtmlId();
return $control;
}
function RadioList_prototype_myControl(RadioList $_this)
{
$container = clone $_this->getContainerPrototype();
$separator = (string) $_this->getSeparatorPrototype();
$control = $_this->getMyControl();
$id = $control->id;
$counter = 0;
$value = $_this->value === NULL ? NULL : (string) $_this->getValue();
$label = /*Nette\Web\*/Html::el('label');
$container->add('<table><tr>');
foreach ($_this->items as $key => $val) {
$control->id = $label->for = $id . '-' . $counter;
$control->checked = (string) $key === $value;
$control->value = $key;
if ($val instanceof /*Nette\Web\*/Html) {
$label->setHtml($val);
} else {
$label->setText($_this->translate($val));
}
$container->add('<td>' . (string) $control . (string) $label . $separator . '</td>');
$counter++;
// TODO: separator after last item?
}
$container->add('</tr></table>');
return $container;
}
?>
Pravdaže nefungovalo parent::getControl() takže som musel prepísať aj to. Problém bol aj že niektoré premenné boli private alebo protected, ale dali sa zavolať cez metódu get.., okrem disabled myslím, ale nepíše to chybu tak sa nerýpem.
Nič moc ale funguje to.