Snippet + ajax vyhledávání
Notice: This thread is very old.
- Filip023
- Member | 13
Zdravím,
mám problém s rozběhnutí mého prvního snippetu. Chtěl jsem vyřešit
s jeho pomocí vyhledávání + následné překreslení nabídky, ale
z nějakého důvodu se mi nabídky nepřekreslí a zůstanou vždy ty co jsem
měl na začátku. Nevíte, kde by mohl být problém?
OfferPresenter.php
<?php
use Nette\Application\UI\Form,
Nette,
Model;
class OfferPresenter extends BasePresenter
{
private $offer;
protected function startup()
{
parent::startup();
$this->offer = $this->context->offer;
}
public function renderIndex()
{
$this->template->offers = $this->offer->findAll()->order('created DESC');
}
public function handleSearch($term)
{
$this->template->offers = $this->offer->find(7);
$this->redrawControl();
}
}
?>
šablona
<?php
{block content}
<div class="content" id="offer">
<h2>Nabídka</h2>
<div id="search_form">
{form searchForm}
{control $form errors}
{label text /}
{input text}
{label category_id /}
{input category_id}
{input search}
{/form}
</div>
{dump count($offers)}
<div class="left">
{if count($offers) > 0}
{snippet results}
{foreach $offers as $offer}
// telo pro zobrazeni nabidek
{/foreach}
{/snippet}
{else}
<p>Aktuálně je naše nabídka prázdná!</p>
{/if}
</div>
</div>
<script>
jQuery(window).ready(function() {
$('#frm-searchForm-text').on('change input', function () {
var value = $(this).val();
if (value.length >= 2) {
$.nette.ajax({
'url': '?do=search',
'data': {
term: value
}
});
}
});
});
</script>
{/block}
?>
Na počátku se mi vykreslí nabídky s ID 6 a 7, po napsání textu by se měla zobrazit jen 7, ale zůstanou obě.
- sKopheK
- Member | 207
Určitě bych snippet zapsal minimálně takto, protože do budoucna budeš zobrazovat podle hledaného výrazu:
<div class="left">
{snippet results}
{if count($offers) > 0}
{foreach $offers as $offer}
// telo pro zobrazeni nabidek
{/foreach}
{else}
<p>Aktuálně je naše nabídka prázdná!</p>
{/if}
{/snippet}
</div>
a dále bych překresloval jen požadovanou část stránky:
$this->redrawControl('results');
P.S.: Jsi v anglickém fóru.
Last edited by sKopheK (2014-03-26 09:09)
- akadlec
- Member | 1326
@sKophek: In your code is unnecessary html. It should be reduced like this:
<div n:snippet="results" class="left">
{if count($offers) > 0}
{foreach $offers as $offer}
// telo pro zobrazeni nabidek
{/foreach}
{else}
<p>Aktuálně je naše nabídka prázdná!</p>
{/if}
</div>
PS: You are on EN version of this page…