Obsah
Nette\Web\Html
Nette\Web\Html je malý pomocník pro generování (X)HTML kódu v PHP. Nabízí objektové zapouzdření HTML elementů a zjednodušení generování HTML. V Nette Frameworku je tato třída používána dalšími knihovnami, zejména formuláři.
$el = Html::el("img");
$el->src = "image.jpg";
echo $el;
Zápis a čtení atributů
Změnit a číst atributy elementu je možné přes vlastnosti objektu.
Zrušení hodnoty dosáhnete nastavením hodnoty NULL.
$el = Html::el("img"); // vytvoření elementu
$el->src = "image.jpg"; // nastavení atributu
echo $el->src; // čtení atributu
$el->src = NULL; // zrušení hodnoty
Další možností je zavolání přetížené metody. V tomto případě je často výhodné použít zřetězených volání (fluent interfaces).
$img = Html::el("img")->src = "image.jpg";
echo Html::el("input")->type($secret ? "password" : "text")->name("heslo");
Pokud jste zvyklí settery a gettery volat s příslušnými prefixy set a get, můžete to tak činit i zde.
Hodnoty atributů
Hodnotou atributu nemusí být jen číslo. Pokud je to praktické, můžete použít i logickou hodnotu nebo dokonce pole. Také existuje speciální setter pro usnadnění nastavování cíle odkazu s parametry.
$checkbox = Html::el("input")->type("checkbox");
$checkbox->checked = TRUE; // <input type="checkbox" checked="checked" />
$checkbox->checked = FALSE; // <input type="checkbox" />
// použití pole
$el->class[] = $active ? 'active' : NULL; // NULL se ignoruje
$el->class[] = 'top';
$el->style['color'] = 'green';
$el->style['display'] = 'block';
echo $el;
// <input class="active top" style="color: green; display: block" />
// nastavení cíle odkazu
$params["id"] = 10;
$a = Html::el("a")->href("index.php", $params);
// samozřejmě druhý parametr nemusíte použít
// a můžete napsat celou adresu v prvním parametru
Použití továrničky Html::el
Atributy lze nastavit již přímo v továrničce Html::el. Od
Nette Frameworku verze 0.9 lze přímo v továrničce nastavit vícenásobné
hodnoty atributu (například třídy).
$el = Html::el("input type=text class=required");
$el = Html::el('strong class="red important"'); // od verze 0.9
Zadáte-li nepovinný druhý parametr, tak v případě, že to bude pole, tak nastavíte parametry elementu. Pokud jím bude text, tak nastavíte vnitřní text elementu.
$strong = Html::el("strong", "Barnes & Noble");
$input = Html::el("input", array("type" => "text"));
Výpis elementu
- Nejjednodušším způsobem vypsání elementu je použít
echo. - Převedení na řetězec zařídíte přetypováním.
- Získání otevírací a uzavírací značky obstarají metody
startTagaendTag. - Alternativou k příkazu
echoje použití metodyrender.
$el = Html::el("div class=header");
echo $el; // <div class="header"></div>
$s = (string) $el; // získání řetězce pro pozdější použití
echo $el->startTag(); // <div class="header">
echo $el->endTag(); // </div>
$el->render(); // vypíše <div class="header"></div>
Změna výstupního formátu (HTML vs. XHTML)
Výstupní formát ovládá statická proměnná Html::$xhtml.
Výchozím nastavením je XHTML.
$el = Html::el("hr");
echo $el; // <hr />
Html::$xhtml = FALSE;
echo $el; // <hr>
Hierarchie elementů
$el = Html::el();
// (všimněte si, $el je nyní "kontejner", tj. bez názvu elementu)
// a vytvoříme potomka, element strong
$strong = $el->create('strong');
$strong->setText('La Trine');
// nebo lze psát rovnou:
// $el->create('strong', 'La Trine');
// lze přidávat existující uzly Html
$br = Html::el('br');
$el->add($br);
echo $el; // <strong>La Trine</strong><br />
// uzel může být i textový
$el->add('Yes!'); // obdoba setText, ale narozdíl od setText nesmaže původní obsah elementu
// nastavit HTML
$el->setHtml("<em>html</em>");
// nebo přidat HTML
$el->add("<em>html</em>");
// k potomkům lze přistupovat přímo přes ArrayAccess
$el[] = 'Hello!';
if ($el->count()) ...
Viz také:



