U tlačítka formuláře se nezobrazuje description
- Ani
- Člen | 226
Nette Framework 1.0-dev (revision ced2e04 released on 2010–05–11)
php 5.3
Když se přidá buttonu ->setOption(‚description‘, ‚text‘), tak
se nezobrazuje.
Vyřešil jsem to následujicím přepsáním metody v ConventionalRenderer,
jestli to brát jako bug si nejsem jistej, pokud ne, tak to přidat někam do
dokumentace nebo nechat na fóru, ať se to dá najít a někdo další se
s tím nepere jako já.
<?php
public function renderPairMulti(array $controls)
{
$s = array();
foreach ($controls as $control) {
if (!($control instanceof IFormControl)) {
throw new \InvalidArgumentException("Argument must be array of IFormControl instances.");
}
//pridano mnou
$description = $control->getOption('description');
if ($description instanceof Html) {
$description = ' ' . $control->getOption('description');
} elseif (is_string($description)) {
$description = ' ' . $this->getWrapper('control description')->setText($control->translate($description));
} else {
$description = '';
}
////pridano mnou
$s[] = (string) $control->getControl() . $description; // plus tady pridat ten . $description
}
$pair = $this->getWrapper('pair container');
$pair->add($this->renderLabel($control));
$pair->add($this->getWrapper('control container')->setHtml(implode(" ", $s)));
return $pair->render(0);
}
?>
btw. Proč je v metodě renderControl na konci podminka:
if ($control instanceof Checkbox || $control instanceof Button)
Pokud to chápu, tak se tam Button nikdy nedostane.
Editoval Ani (5. 6. 2010 23:20)
- Šaman
- Člen | 2666
Description přidá za input ještě další doplňující text. Např popis
inputu je DELKA, pak je input a pak CM.
Button a checkbox ale před inputem žádný label nemají – buton má popis
na sobě a checkbox má popis implicitně až za inputem. Takže tam nemá smysl
přidávat další popis ZA input.
Pokud potřebuješ kolem buttonu něco dalšího vypsat, tak bych doporučoval použít manuální renderování. Anebo si přiohnout jen šablony a používat šablonu formuláře a nepřepisovat renderer.