Nittro – novinka pro váš frontend (původně NetteJS)
- jahudka
- Člen | 71
@Ages ahoj, problém je v tom, že Nittro nepočítá s tím, že bys title řešil snippetem – očekává, že title dáš do payloadu tak, jak to píše @VáclavKraus – a bohužel je to zatím řešený tak, že se to nedá moc změnit. V Nittru 3 to bude vyřešený a půjde si při buildu nastavit, kterou strategii pro práci s title používáš.
- Ages
- Člen | 128
@jahudka aplikaci jsem předělal a nemám s tím nejmenším prblém
:) nyní to funguje parádně!
Měl bych ještě dotazy ohledně flash messages:
- V případě že vše jede přes Ajax zpráva po určité době korektně zmizí, ale pokud například otevřu první stránku a ta mi vyhodí flashku není vygenerována Ajaxem a staticky zůstane což by bylo také správně, ale bohužel mi tam tato zpráva zůstává viset i při dalších pohybech v aplikaci dokud neobnovím celou stránku
- Pokud mám kód
<div n:flashes></div>
přímo v @layout.latte tam mi flasky normálně mizejí, ale pokud jej přesunu někde do vkládané šablony protože je pokaždé potřebuji generovat jinde, tak zůstávají statické
Díky
- jahudka
- Člen | 71
Ages napsal(a):
@jahudka aplikaci jsem předělal a nemám s tím nejmenším prblém :) nyní to funguje parádně!
Měl bych ještě dotazy ohledně flash messages:
- V případě že vše jede přes Ajax zpráva po určité době korektně zmizí, ale pokud například otevřu první stránku a ta mi vyhodí flashku není vygenerována Ajaxem a staticky zůstane což by bylo také správně, ale bohužel mi tam tato zpráva zůstává viset i při dalších pohybech v aplikaci dokud neobnovím celou stránku
- Pokud mám kód
<div n:flashes></div>
přímo v @layout.latte tam mi flasky normálně mizejí, ale pokud jej přesunu někde do vkládané šablony protože je pokaždé potřebuji generovat jinde, tak zůstávají statickéDíky
Co myslíš „vkládanou šablonou“, máš na mysli šablonu nějakýho
view která extenduje @layout.latte
, nebo šablonu vkládanou
pomocí {include ...}
? Můžeš mrknout jestli je nějakej rozdíl
ve vygenerovaným HTML pokud dáš
<div n:flashes></div>
do layoutu vs. do šablony view?
Mám dojem že na to už někdo někdy narazil, jen si nepamatuju, jestli jsme
našli nějaký řešení..
- Ages
- Člen | 128
Myslím šablonu která extenduje @layout.latte
Generování v @layout.latte
<div id="flashes" data-flash-inline="true"><p class="nittro-flash nittro-flash-inline nittro-flash-warning">Pro tuto akci je potřebné přihlášení.</p></div>
Generování v extendované šabloně
<div id="flashes" data-flash-inline="true"><p class="nittro-flash nittro-flash-inline nittro-flash-success">Článek: ToDo byl upraven.</p></div>
Po čase z HTML flashka zmizí
<div id="flashes" data-flash-inline="true"></div>
Ale stále zůstane viditelná na stránce
Editoval Ages (19. 6. 2018 8:52)
- jahudka
- Člen | 71
Ages napsal(a):
Ale stále zůstane viditelná na stránce
Wut?? :-D to vypadá jako něco hodně divnýho.. můžeš poslat třeba nějaký screeny kde ta flashka zůstala viset, ale v developer tools už v DOM struktuře není? nebo alternativně buď můžem mrknout přes TeamViewer nebo se můžeš stavit na kafe, pokud jsi pražskej :-)
- Alsatian
- Člen | 175
Ages napsal(a):
Ahoj, nasadil jsem Nittro na svůj projekt a můsím říct že je to vážně supr :) jen jsem narazil na menší zádrhel a to že se mi přepisuje $title na původní hodnotu
Struktura šablon je:<!-- @layout.latte --> <html> <head> <title n:snippet="title">{ifset $title}{$title|stripHtml} | {/ifset}Super Web</title> </head> ...
<!-- test.latte --> {extends '../@layout.latte'} {var $title = 'Test'} {block content} ...
Takto mám postavenou celou aplikaci a před nasazením Nittro se mi normálně generovaly správně nadpisy, ale nyní když přejdu jinam se mi nejprve změní title na správnou v tomto případě na Test | Super Web a pak se přepíše zpět na původní hodnotu.
Změna je téměř nepostřehnutelná a ano snippet title mám nasteven pro defaultní překreslování.Má někdo nápad co by to mohlo způsobovat?
Neví někdo jak vyřešit tag Title při použití Nittro? Generuji je dynamicky v šabloně, multijazyčně, pro přehlednost bych je tam rád nechal.
Při načtení stránky titulek naskočí správně a hned se přepíše na posledně použitý (stránka vygenerovaná přes URL + enter).
Děkuji moc :)
- jahudka
- Člen | 71
Alsatian napsal(a):
Ages napsal(a):
Ahoj, nasadil jsem Nittro na svůj projekt a můsím říct že je to vážně supr :) jen jsem narazil na menší zádrhel a to že se mi přepisuje $title na původní hodnotu
Struktura šablon je:<!-- @layout.latte --> <html> <head> <title n:snippet="title">{ifset $title}{$title|stripHtml} | {/ifset}Super Web</title> </head> ...
<!-- test.latte --> {extends '../@layout.latte'} {var $title = 'Test'} {block content} ...
Takto mám postavenou celou aplikaci a před nasazením Nittro se mi normálně generovaly správně nadpisy, ale nyní když přejdu jinam se mi nejprve změní title na správnou v tomto případě na Test | Super Web a pak se přepíše zpět na původní hodnotu.
Změna je téměř nepostřehnutelná a ano snippet title mám nasteven pro defaultní překreslování.Má někdo nápad co by to mohlo způsobovat?
Neví někdo jak vyřešit tag Title při použití Nittro? Generuji je dynamicky v šabloně, multijazyčně, pro přehlednost bych je tam rád nechal.
Při načtení stránky titulek naskočí správně a hned se přepíše na posledně použitý (stránka vygenerovaná přes URL + enter).
Děkuji moc :)
Ahoj, to je pořád ten problém co nahoře – Nittro nastavuje title podle
proměnné $title
z payloadu. Fix přímo v Nittru zatím není,
ale můžeš si to fixnout sám, pokud si děláš custom build Nittra –
potřebuješ takovejhle skript, třeba soubor
assets/js/App/TitleHelper.js
:
<script>
_context.invoke(function(HistoryAgent, Strings) {
HistoryAgent.prototype._handleResponse = function (data, evt) {
var payload = evt.data.response.getPayload();
if ('snippets' in payload && 'snippet--title' in payload.snippets) {
data.title = Strings.escapeHtml(payload.snippets['snippet--title']);
} else if (payload.title) {
data.title = payload.title;
}
};
}, {
HistoryAgent: 'Nittro.Page.HistoryAgent',
Strings: 'Utils.Strings'
});
</script>
Pak si v konfiguraci Nittro builderu přidáš cestu k tomuhle skriptu do
libraries
/ js
a máš vyhráno :-) pokud si buildíš
Nittro sám pomocí Gulp nebo Grunt pluginu, asi tušíš, jak to
tam dát; pokud používáš hotovej build Nittra (ať už Essentials nebo
Full), můžeš si nechat jednorázově vygenerovat custom build na webu – výchozí
nastavení custom build toolu odpovídá Essentials a když tam doklikáš
i všechny ostatní Nittro komponenty, dostaneš Full.
- Ages
- Člen | 128
@Alsatian
Já jsem to nakonec předělal a využívám to takto:
//BasePresenter.php
protected function startup() {
parent::startup();
$this->getHttpResponse()->addHeader('Access-Control-Allow-Origin', '*');
$this->getHttpResponse()->addHeader('Access-Control-Allow-Headers', 'X-Requested-With');
$this->setDefaultSnippets(['title']);
}
protected function afterRender() {
parent::afterRender();
if ($this->isAjax()) {
$this->payload->title = $this->title;
}
$this->template->title = $this->title;
}
//HomepagePresenter.php
public function renderDefault() {
$this->title = 'SuperWeb';
}
<!-- @layout.latte -->
<title n:snippet="title">{$title}</title>
- jahudka
- Člen | 71
Ahoj vespolek, jen ať je to nějak všude – Nittro má teď svoje vlastní fórum, takže další dotazy na něj směřujte tam :-)
pa j