EN | CS | Přihlásit | Registrovat

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 startTag a endTag.
  • Alternativou k příkazu echo je použití metody render.
$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é:


Login to submit a comment