Našeptávání NetBeans v Latte
- Pesino
- Člen | 7
Zdravím,
jsem tady a v Nette nový, tak mě prosím hned neukamenujte za můj nejspíš
banální dotaz :)
NetBeans mi po založení Nette projektu v Latte souborech nic
„nenašeptává“. Verzi NetBeans mám 8.0.2, takže plugin pro Nette by měl
již v sobě mít.
Je to pro mě celkem zásadní problém, mohli byste prosím poradit, kde
dělám chybu? Předem moc díky za odpověď.
- n.u.r.v.
- Člen | 485
Mě netbeans našeptává předané proměnné z presenterů ($this->template->…) a pak mi našeptává základní makra a doplňuje např. názvy formulářů {form …}
a samozřejmě našeptává html kod…
co mi např. nefunguje je našeptávání v cyklu:
{foreach $array AS $item}
{* $item to nenapoví *}
{/foreach}
Co se stane když napíšeš {for a dáš ctrl+mezerník?
Editoval n.u.r.v. (2. 11. 2015 9:59)
- n.u.r.v.
- Člen | 485
Tak ještě pošli adresářovou strukturu app… kde máš latte a kde presenter kde latte plníš…
Počítám s tím, že máš klasicky vytvořený a otevřený projekt v netbeans. Pokud ale soubory otevíráš v netbeans přes File-Open file a nemáš vytvořený netbeans projekt, tak to asi našeptávat nebude…
- Pavel Kravčík
- Člen | 1196
@n.u.r.v.: To mi řekni, proč Ti to napovídá. :) Mě jen jednou za uherský rok napoví jméno componenty.
Někde už jsem se na to ptal a zatím to nefunguje. A nepomůže ani {* @var $item \Entity\ArticleEntity *}. To by bylo pěkné, kdyby se daly definovat závislosti takhle ručně a pak by to napovídalo například proměnné entit nebo metody objektů.
- n.u.r.v.
- Člen | 485
Pavel Kravčík: Nevím, proč, ale vždy mi to napovídalo…
My máme adr. strukturu vždy rozdělenou takto a našeptávání funguje:
např.:
- Složka app
- config
- config.neon (a zde máme mapping: *: App\Modules**Presenter, errorPresenter: ErrorModule:Error)
- config.local.neon
- modules
- AdminModule
- presenters
- BasePresenter.php (namespace App\Modules\AdminModule;)
- AdminPresenter.php (namespace App\Modules\AdminModule;)
- XxxxxPresenter.php (namespace App\Modules\AdminModule;)
- templates
- Admin
- default.latte
- userList.latte
- Xxxxx
- default.latte
- xyz.latte
- Admin
- presenters
- StejneTakDalsiModule
- presenters
- templates
- ErrorModule
- presenters
- templates
- AdminModule
- templates
- @layout.latte (hlavní layout), v jednotlivých latte pak {layout '../../../../templates/@layout.latte'}
Edit: Pavel Kravčík – formuláře zatím máme v presenterech, ne v samostatných komponentách
Editoval n.u.r.v. (2. 11. 2015 11:27)
- Pesino
- Člen | 7
Jasně, ale to vypadá, že takto máte postavenou nějakou vlastní
strukturu, na které to funguje, tak by to mělo fungovat i na té defaultní
po stažení Nette a vytvoření blogu dle návodu a na kterékoliv jiné, pokud
se budou správně předávat data z presenterů do šablon.
Pokud tedy v presenteru PostPresenter.php mám takovýto kód:
public function renderShow($postId)
{
$post = $this->database->table('posts')->get($postId);
if (!$post) {
$this->error('Stránka nebyla nalezena');
}
$this->template->post = $post;
$this->template->comments = $post->related('comment')->order('created_at');
}
Takže mám za to, že potom by mi to v Latte souboru show.latte mělo našeptávat předané proměnné post a comments. Nebo musím ještě někde něco přidat? Jestli nebude problém spíš u mě, nežli někde ve struktuře :)
- n.u.r.v.
- Člen | 485
Tak už jsem to zjistil – když nainstaluju pomocí composer create-project nette/web-project
A dám do již vytvořeného HomepagePresenter renderDefault metodu a do ní předání prom. do template, tak v templates/homepage/default.latte to nenapovídá
Ale když ve vytvořené složce Presenters vytvořím ještě jednu složku presenters a do ní dám ten HomepagePresenter.php a upravím namespace na namespace App\Presenters\presenters tak už to v latte napovídá prom.
- Pavel Kravčík
- Člen | 1196
@n.u.r.v.: To bude asi tím namespace. Strukturu používám stejnou
jako vy a i se složkou presenters
to nenapoví. Spíš kdyby to
šlo donutit napovídat definový typ. Tohle není příliš velký problém
(ono stejně aby to našlo proměnné i z předků je trochu utopie).
- Pesino
- Člen | 7
Tak změna.. trochu jsem se v tom ještě prohrabal a podle návodu n.u.r.v.a mi to najednou opravdu začalo fungovat, jen je problém, že po spuštění aplikace naskakujou nějaký errory a je to tak trochu nešikovně v adresářich presenters/presenters/… ale jinak to našeptává, fakt zajímavý a teď co s tím :)
- Pavel Kravčík
- Člen | 1196
Můžeš přejít na takovou „standardní strukturu“, kterou věřím, že tu používá většina lidí. Ten sandbox je co nejjednodušší, proto to je ve složce Presenters. Tj. oddělíš si moduly a do nich dáváš s nimi související věci. Např. můj vzor:
+ app
-+ CoreModule
--+ presenters
--- HomepagePresenter
--+ templates
---- @layout.latte
---+ Homepage
----- default.latte
+ config
+ vendor
+ temp
@layout.latte
- Jiří Nápravník
- Člen | 710
Netbeans ma napovidat prommenne z presenteru v latte? to se mi nikdy nestalo teda:-)
Ja mam strukturu však takovouto:
aplication/app/UserModule/FrontModule/Presenters/SignPresenter.php namespace
UserModule\FrontModule\Presenters;
a template je pak zde:
aplication/app/UserModule/FrontModule/Presenters/templates/Sign/in.latte apod.