Našeptávání NetBeans v Latte

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

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
+
0
-

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)

Pesino
Člen | 7
+
0
-

Přesně jak Tobě našeptává předané proměnné z presenterů do Latte, tak mě ne, čím to bude?
Ten $item ve foreach mi to taky nenapoví, ale pokud začnu psát {for a zmáčku ctrl+mezerník, tak mi to nabídne dolpnění na:

  • {for init; cond; exec
  • {foreach array as item
  • {form name
n.u.r.v.
Člen | 485
+
0
-

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
+
0
-

@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ů.

Pesino
Člen | 7
+
0
-

Struktura app je:

  • presenters
    • templates
      • Post
        • show.latte
    • PostPresenter.php

Mám vytvořen ten úvodní blog podle toho seriálu Quickstart.
Projekt jsem vytvořil přes File->New Project-PHP Application with Existing Sources.

Editoval Pesino (2. 11. 2015 10:30)

n.u.r.v.
Člen | 485
+
0
-

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
  • StejneTakDalsiModule
    • presenters
    • templates
  • ErrorModule
    • presenters
    • templates
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
+
0
-

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
+
0
-

hmm, zkusím nainstalovat přes composer čisté nette a založit netbeans projekt- zda mi to bude napovídat…

n.u.r.v.
Člen | 485
+
0
-

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
+
0
-

@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
+
0
-

Takže jsi to vyřešil pouze přidáním další složky a úpravou namespace. To je teda zajímavý a mě ani to teda nefunguje :( .. složkama to nebude si myslím, ale jestli už, tak možná tím namespace. Nevím, máš asi zázračný NetBeans, nějakou pozlacenou verzi :D

Pesino
Člen | 7
+
0
-

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
+
0
-

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
Pesino
Člen | 7
+
0
-

Jasný, každopádně s tím našeptáváním toho asi víc nevymyslíme, takže Vám moc děkuju za ochotu poradit ;)

Jiří Nápravník
Člen | 710
+
0
-

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.

n.u.r.v.
Člen | 485
+
0
-

@JiříNápravník – Ano, v presenteru předané proměnné pomocí $this->template mi v latte netbeans napovídá odjakživa. To samé formuláře vytvořené v presenterech pomocí createComponentXxxForm(){$form = new Form(); return $form}