co se složkou templates/components/

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

nazdar, mám pár dotazů ohledně komponent:

První se týká složky app/templates/components/ v sandboxu – jejímu umístění a účelu příliš nerozumím – napojit odtud template pro komponentu nějakým pěkným interním způsobem nelze (nebo?).

Druhá se týká obsahu výše uvedené složky – form.latte. K čemu to? Je to jen sample?

V quickstartu se mi nelíbilo nahození komponenty a latte souboru přímo do rootu app/components/ a tak jsem skončil se strukturou:

app/components/Neco/Neco.php
app/components/Neco/Neco.latte

Nahrávání a render je pak řešen automaticky, nevím jestli nejlepší řešení.

Jak loading komponent, render jejich templatů a jejich umístění řešíte vy? Není na to nějaký built-in systém?

Díky

Šaman
Člen | 2666
+
0
-

Já to s umístěním řeším jako ty (jen šablona začíná malým písmenemm protože jen třídy jsou velkým).
Dokonce mi to tak přirostli k srdci, že plánuji přepsat hledání šablon tak, aby mi je hledalo ve stejném adresáři, jako presenter. Protože presenter a šablony jsou úzce spjaté a jedno bez druhého nemá smysl. Tak moc nechápu, proč je oddělovat.

Konkrétně si to představuji takto:

<?php
app
  - presenters
     - UserPresenter
        - UserPresenter.php
        - templates
           - detail.latte
           - list.latte
?>
David Grudl
Nette Core | 8232
+
0
-

components asi není úplně vhodný název, jde prostě o adresář pro části šablony, které lze inkludovat z jakéhokoliv prezenteru. Nesouvisí to s komponentami presenterů.

JHadamcik
Člen | 47
+
0
-

David Grudl napsal(a):

components asi není úplně vhodný název, jde prostě o adresář pro části šablony, které lze inkludovat z jakéhokoliv prezenteru. Nesouvisí to s komponentami presenterů.

Na druhou stranu mě nenapadá lepší.

Jinak já třeba s oddělením souhlasím a má adresářová struktura vypadá

app
  - components
    NewComponent.php
    - templates
      -newComponent.latte
  - presenters
    - UserPreseter.php
  - templates
    - user
      - default.latte

Obecně jak je to v sandboxu. Mám to tak rád, protože mám oddělenou V a P vrstvu. Šablony u komponent jsou z důvodu, abych je měl blízko. Ono by bylo možná vhodnější dát do app->templates složku components pro vykreslitelné komponenty presenterů. Cesta k šablonám by u komponent byla trochu delší, ale přišlo by mi to logické.

No a kdybych zašel ještě dál a představil si components jen a pouze jako vykreslitelné komponenty presenterů a třeba controls jako nevykreslitelné komponenty presenterů, pak by se dalo vložit components i controls do složky presenters a v app udělat kupříkladu složku controls pro cokoliv, co není spjato s presenterem.

Výsledek asi takto:

app
  - controls
     - Datagrid.php
  - presenters
    - UserPresenter.php
    -controls
     - EmailVerification.php
    -components
     - Comments.php
  - templates
    - User
      - default.latte
    - components
      - comments.latte

Jak to vypadá?

rixi
Člen | 109
+
0
-

templates/common