oldLayoutMode VS současný stav
- toka
- Člen | 253
Nejsem zase až tak zdatný v Nette, takže mám dotaz. Mám fungující
aplikaci, kterou jsem napsal kdysi, myslím úplně běžným způsobem.
Nahradil jsem v ní verzi Nette za aktuální, a všechno v pohodě funguje.
Ale… v nové verzi je možné použít řekněme direktivu
public $oldLayoutMode = false;
, a pak celá aplikace nefunguje.
Udělal by si někdo ve stručnosti čas, aby mi laicky vysvětlil, co, resp.
jak se má co změnit, aby to fungovalo podle současné vize? Kde je ta hlavní
změna? Děkuji mockrát.
- Ondřej Mirtes
- Člen | 1536
Je otázka, jestli se vyplatí přepisovat starou aplikaci (pokud v ní nebudou probíhat další bouřlivé změny) podle novinek v Nette.
$oldLayoutMode = false
vypne starý způsob fungování šablon
(který fungoval na principu @layout.phtml + {include $content} ze
šablony Presenter.action.phtml) a zapne nový způsob, který pracuje na
principu bloků a opačném vykreslování – doporučuji přednášku, kde David
rozebírá výhody nového systému.
- Petr Motejlek
- Člen | 293
S tim souhlasim. Kdyz mam starou aplikaci a funguje mi s novym Nette, tak je to super. Otazka je: Potrebuju to? Jestli je treba k te aplikaci neco pripsat a ve stare verzi Nette pro to neni podpora, to je chvile pro prepsani vseho na novou verzi, jindy ne.
- lactarius
- Člen | 47
No – teď jsem se do toho slušně zamotal. Zřejmě se jedná o problém
mezi židlí a klávesnicí, ale mimořádného rozsahu, protože to jsou věci,
který mi u jiný aplikace fungujou (se stejnou verzí frameworku).
Jedná se o to, že se neprovede stylování.
Kus kódu šablon:
{* Front/@layout *}
.
<script type="text/javascript">
$(document).ready(function() {
$('input:visible:enabled:first').focus();
});
</script>
.
<div id="content">
{block content}
{/block}
</div>
<div id="footer">
{block footer}
<a href="{link Login:}">login</a>
{/block}
</div>
{* Front/Default/default *}
{block content}
<h3>...</h3>
{* Front/Login/default *}
{block content}
<h3>Přihlášení</h3>
{control loginForm}
<a href="{link register}" style="font-style: italic;">Registrace</a>
Po spuštění normálně naběhne úvodní stránka i s uvítacím
blábolem. Po kliknutí na odkaz se natáhne stránka s přihlašovacím
formulářem, hlava i pata z layoutu – ale jinak to hlavu ani patu
nemá – proběhne v pořádku i JS, protože kurzor skočí na první pole
formuláře, ve zdrojáku je normálně vidět
DTD s příslušenstvím – a provede se, protože čeština je
v pořádku – všechno – pouze bez CSS.
Fakt už nevím, v čem by mohla být chyba.
- lactarius
- Člen | 47
Ondřej Mirtes: …čoveče – to jsou věci.....
Tak dík, no – já to tušil…
Nicméně – pouze pro zajímavost zasílám podstatnou část layoutu, ve
kterým byla natolik zásadní chyba, že jsem jí prostě přehlídnul. Co je
nejhorší – tím to nebylo. Teď mi ale vysvětli, jak je možný, že
i takto naběhla správně ta první stránka:
</head>
<div id="container">
<div id="header">
{block header}
<h1>AJAX Chat</h1>
{/block}
</div>
<div id="content">
{block content}
{/block}
</div>
<div id="footer">
{block footer}
<a href="{link Login:}">login</a>
{/block}
</div>
</div>
<body>
</body>
</html>
Samozřejmě vím, co je mou povinností – zítra vrátím občanku a zpátky na strom…
- Ondřej Mirtes
- Člen | 1536
$oldLayoutMode
zapíná pouze nové bloky. Adresářovou
strukturu nastavuje myslím $oldModuleMode
– ale je to pravda,
nastavuje se v Presenteru a přitom určuje umístění Presenteru. Ale
hlavně, že to funguje :)
- PetrP
- Člen | 587
Jasně myslel jsem oldModuleMode, nechápu jak jsem včera pochopil že se mluví o adresářích. Vypadá to jako bych reagoval do úplně jiného okna. ;]
Ondřej Mirtes napsal(a):
ale je to pravda, nastavuje se v Presenteru a přitom určuje umístění Presenteru. Ale hlavně, že to funguje :)
A skutečně to funguje?
- PetrP
- Člen | 587
Ondřej Mirtes napsal(a):
Funguje, používám novou adresářovou strukturu.
Já taky, mluvím o tom jestli funguje přepnout na starou adresářovou strukturu. Omlouvám se za vyjadřovací (ne)schopnost.
Protože PresenterLoader k oldModuleMode nepřihlíží, ani z principu nemůže.
Editoval PetrP (21. 1. 2010 13:18)