PresenterTreePanel, první betaverze

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

PresenterTreePanel

Jednoduchá hračička pro debugování presenterů a jejich hierarchie. Zobrazuje list presentrů (doufám, že i ty v modulech) a jejich povinné i vynechatelné parametry. Dokáže i dobře posloužit jako rychlá interní navigace pro vývojáře.

Problémy

  • zatím necachuje
  • neumí routy pro přímý link do presenteru
  • neotestováno na modulech (snad to funguje, ale když tak to počká, až se opraví routování)

Download:
https://github.com/…terTreePanel

Řešení problémů:

Cachování není problém, to je dokonce i rychlá záležitost. Co mě ale trápí je generování linků bez instance presenteru. Nějaké to

Environment::getAplication()->getRouter()->match($request)

kde request bych si upravil podle chtěného linku jednak nejde, jednak to není hezké řešení. Netušíte prosím někdo, kudy zhruba by se to dalo obejít? Obejít zní sice špatně, ale Nette asi s mimopresenterovou tvorbou linků nepočítá.

sodae
Nette Evangelist | 250
+
0
-

pěkny! co takhle přidat persistent proměné s obsahem :-)

Panda
Člen | 569
+
0
-

Ono s mimopresenterovou tvorbou linků ani moc počítat nejde, protože je potřeba mít k dispozici strukturu komponent. Instanci presenteru ale dle mého soudu můžeš získat (nejsem si jistý, jestli při vykreslování panelu ještě bude k dispozici):

Environment::getAplication()->getPresenter()->link(...);
Honza Kuchař
Člen | 1662
+
0
-

Bomba! No myslím, že Nette se stává nejpropacovanějším frameworkem vůbec. :-)

jasir
Člen | 746
+
0
-

Mě to nechodí… :( Jestli správně chápu problém, je tady:

https://github.com/…reePanel.php#L59

Pokud mám tedy například presenter Admin_HomepagePresenter v souboru app/AdminModule/presenters/HomepagePresenter.php, z názvu souboru je špatně odvozeno jméno presenteru (pokouší se vytvořit reflection pro třídu HomepagePresenter, ta ale neexistuje).

Mikulas Dite
Člen | 756
+
0
-

jasir napsal(a):
presenter Admin_HomepagePresenter v souboru app/AdminModule/presenters/HomepagePresenter.php

Tak nějak sem měl vžité, že Nette používá filename == jméno třídy. Tohle je (asi jediná) výjimka.

Díky, fixnu.

Mikulas Dite
Člen | 756
+
0
-

sodae napsal(a):
pěkny! co takhle přidat persistent proměné s obsahem :-)

Díky, dobrej nápad – přidám časem.

Panda napsal(a):
geniální řešení –

Á, já tam ten presenter dokonce i používám pro backlink a vůbec mě to nenapadlo. Díky moc.

jasir napsal(a):
problém s moduly –

Snad to bude fungovat teď v nejnovějším commitu.


Pokračování bude na https://forum.nette.org/…tertreepanel?…

Lopo
Člen | 277
+
0
-

do PresenterTreePanel.php som musel kvoli php5.2 pred samotnu triedu doplnit (okopirovane z komentara php manualu):

if (false===function_exists('lcfirst')):
	function lcfirst($str)
	{
		return (string)(strtolower(substr($str,0,1)).substr($str,1));
	}
endif;

po doplneni to funguje nielen v php 5.3 ale aj 5.2

Mikulas Dite
Člen | 756
+
0
-

Díky, to mi vůbec nedošlo že je to nová fce, asi to ale vyřešim rovnou tim substringem, ať je to kompatibilní.

Aurielle
Člen | 1281
+
0
-

… jde to i jednodušeji ;)

if(!function_exists('lcfirst'))
{
	function lcfirst($str)
	{
		$str{0} = strtolower($str{0});
		return $str;
	}
}

Editoval gmvasek (5. 5. 2010 18:05)

Lopo
Člen | 277
+
0
-

gmvasek napsal(a):

… jde to i jednodušeji ;)

if(!function_exists('lcfirst'))
{
	function lcfirst($str)
	{
		$str{0} = strtolower($str{0});
		return $str;
	}
}

to je len uhol pohladu … :)