Ajax – překreslení {block content}
- Mira8
- Člen | 36
Ahoj,
snažím se ajaxovým voláním překreslit celý block content, jak to lze
efektivně řešit? Používám nette.ajax.js. Redirectu a přenačtení celé
stránky se snažím vyhnout. Pomocí snippetů mi to přijde neefektivní.
Ajaxovým voláním směřuji do jiného presenteru, ideální by tak bylo
zavolat nějaký redraw, který by mi celý content překreslil.
Díky moc!
- David Matějka
- Moderator | 6445
Pomocí snippetů mi to přijde neefektivní
proc? od toho ty snippety jsou. Obal snippetem
{include #content}
v layoutu, prekresli ho a je to.
- Mira8
- Člen | 36
Zkoušel jsem přes snippety a stále se mi to nedaří :/ Přes odkazy „Detail:show“ se snažím dostat do akce show v presenteru detail, kde by mělo dojít k překreslení snippetu.
{foreach $videos as $v}
<div class="gallery-photo-container">
<a class="gallery-photo ajax" title="{$v->title}" n:href="Detail:show" videoId="{$v->id}" data-gallery>
<img src="{= $v->url_before.$v->img_url|compress}">
</a>
</div>
{/foreach}
A v main.js mám ještě:
$('.gallery-photo').on('click', function(e) {
e.preventDefault();
$.nette.ajax({
type: 'GET',
url: this.href,
data: {
value: $(this).closest('a').attr('videoId')
}
});
});
class DetailPresenter extends BasePresenter
{
public function show() {
$httpRequest = $this->getHttpRequest();
if ($httpRequest->isMethod('GET') && array_key_exists('value', $this->params)) {
if (!$this->isAjax()) {
$this->redirect('this');
} else {
$this->redrawControl('contentVideos');
}
}
}
}
V layoutu mám:
{snippet contentVideos}
{include content}
{/snippet}
Kde dělám chybu? Už jsem bezradný. Díky!
- Mira8
- Člen | 36
i to jsem zkousel, content se opet neprekresli, ladenka error nehlasi, v console tez nic, pouze v network: http://snag.gy/B3ZPb.jpg http://snag.gy/2S6ts.jpg