Jednoduché překreslení obsahu snippetu
- Dvory59
- Člen | 40
Ahoj. Potřeboval bych poradit s jednoduchým překreslením snippetu. Na zavolání signálu bych potřeboval změnit includovanou šablonu. Mám to takto :
Šablona
<a class="ajax" n:href="changeSource! 1">Třída</a>
<a class="ajax" n:href="changeSource! 2">Sekce</a>
{snippet ruleSnippet}
{include $latteTemplate}
{/snippet}
Presenter:
public function renderRuleEdit() {
$this->template->latteTemplate="snippetClass.latte";
}
public function handleChangeSource($id){
$this->template->latteTemplate="snippetSections.latte";
$this->redrawControl("ruleSnippet");
}
Nepřekresluje se mi to a já moc nevím jak na to. Do snippetů jsem se
ještě nedostal :/
Může mi prosím někdo poradit? Díky moc
- Ondřej Kubíček
- Člen | 494
ten include by měl být spíš obalen snippetArea – https://doc.nette.org/…ication/ajax#…
ale v tomhle případě bude i problém v tom, že v render nastavuješ
šablonu a ta ti přepíše to ajax volání, které se provede dřív než
render – viz životní cyklus presenteru – https://doc.nette.org/…n/presenters#…
bud bys tu render metodu musel změnit na action nebo možná nebo si tam dát podmínku pokud je ajax tak nenastavuj
- Dvory59
- Člen | 40
@OndřejKubíček
S tím renderem mě to vůbec nenapadlo, ale změnil jsem to a stále se to
nemění.
HTML
<a class="ajax" n:href="changeSource! 1">Třída</a>
<a class="ajax" n:href="changeSource! 2">Sekce</a>
{snippetArea ruleSnippet}
{include $latteTemplate}
{/snippetArea}
Presenter
public function actionRuleEdit()
{
if(!$this->isAjax())
{
$this->template->latteTemplate = "snippetClass.latte";
}
}
public function handleChangeSource($id)
{
if ($this->isAjax()){
$this->template->latteTemplate = "snippetSections.latte";
$this->redrawControl("ruleSnippet");
}
}
Když si v handlu, v podmínce dám něco vypsat třeba do debug baru, tak
to normálně vypíše, ale nic se nepřekresluje :/
Nepadá někoho prosím ještě co s tím?
Editoval Dvory59 (9. 1. 2019 8:46)
- Ondřej Kubíček
- Člen | 494
já nevím jestli to takhle bude fungovat vůbec na ten include… nicméně
zkoušel jsi i tu snippetArea?
když se podíváš v prohlížeči do toho requestu je v response ta
správná odpověd?
- Dvory59
- Člen | 40
jj, tu snippetArea jsem tam dal, beze změny.
V response je {„state“:[]}. Přiznám se, že nevím co by
tam měl správně být.
Zkoušel jsem i
$this->template->setFile(‚snippetSections.latte‘);,
ale taky bez výsledku.
Zkouším na to jít různě, ale nedaří se.
Nebo existuje na tohle ještě nějaká jiná metoda na změnu šablony
snippetu? Zkoušel jsem prohledávat fórum, ale nepodařilo se mi najít nikoho
kdo to řeší :/