Nette Framework
  • Úvodní stránka
  • Download
  • Dokumentace
  • Fórum
  • Blog
  • Přispějte
  • Quick Start
    • Začínáme
    • Adresářová struktura
    • Vytvoření presenteru
    • Připojení šablony
    • Tvorba odkazů
    • Hezčí šablony
    • Zobrazení tabulky
    • Stránkování a řazení
    • Tvoříme komponentu
  • Nette
    • Základní třídy
    • Nette\Annotations
    • Nette\Component
    • Nette\Debug
      • Základy
      • Logování chyb
      • Firebug
    • Nette\Environment
    • Nette\Image
    • Nette\Object
    • Nette\String
  • Nette\Application
    • Application
    • AppForm
    • Control
    • Presenter
    • PresenterCompo­nent
    • PresenterRequest
    • Routování
    • MultiRouter
    • Route
    • SimpleRouter
  • Nette\Caching
  • Nette\Forms
  • Nette\IO\SafeS­tream
  • Nette\Loaders
  • Nette\Security
    • Bezpečnost aplikací
    • Identity
    • SimpleAuthenti­cator
    • Permission
    • Dynamická správa rolí a zdrojů
  • Nette\Templates
    • Template
    • Template Filters
    • Template Helpers
  • Nette\Web
    • Web
    • Ftp
    • Html
    • HttpRequest
    • HttpResponse
    • Session
    • User
Naposledy změněno 15. 10. 2008 Edituj Historie Poslední změny

Nette\Componen­tContainer

Rodičovské komponenty kromě rozhraní Nette\IComponent implementují i Nette\IComponentContainer, které obsahuje metody pro přidání, odebrání, získání a iteraci nad komponentami. Celý strom komponent je tedy tvořen větvemi v podobě objektů Nette\IComponentContainer a listů Nette\IComponent. Připravenou implementací jsou pak třídy Nette\Component a Nette\ComponentContainer.

Iterování nad dětmi

K iterování slouží metoda getComponents($deep = FALSE, $type = NULL). První parametr určuje, zda se mají komponenty procházet do hloubky (neboli rekurzivně). S hodnotou TRUE tedy nejen projde všechny komponenty, jichž je rodič, ale také potomky svých potomků atd. Druhý parametr slouží jako volitelný filtr podle tříd nebo rozhraní.

Pro příklad použití využiju formuláře. Takto nějak se provádí kupříkladu ověření validace prvků:

$valid = TRUE;
foreach ($form->getComponents(TRUE, 'Nette\Forms\IFormControl') as $control) {
    if (!$control->getRules()->validate()) {
        $valid = FALSE;
        break;
    }
}

Viz také:

  • Nette\Componen­tContainer API reference
  • Nette\Component
  • Nette\Component API reference

Nette Framework powered | dibi powered | Texy! powered | Institut Školení PHP