U tlačítka formuláře se nezobrazuje description

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Ani
Člen | 226
+
0
-

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
+
0
-

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.