Ajax a snippet refresh tabulky
- KillPrd
- Začátečník | 110
Ahoj snažím se o jednoduchou filtraci tabulky formou onkeyup kdy při uderu klavesnice se zacně live filtrovat tabulka se zaznamy.Problém: fungue onkeyup ale pouze znovu načte tabulku a to nad tu puvodni se zaznamy ktere tam jsou.
tedy mám takto formulař:
<?php
public function createComponentFilterForm()
{
$filterForm = new AppForm();
$filterForm->getElementPrototype()->class('ajax');
$filterForm->addText('hledej', 'Hledej')->getControlPrototype()->onkeyup("$(this).ajaxSubmit();");
$filterForm->onSubmit[] = callback($this, 'processFilterForm');
return $filterForm;
}
public function processFilterForm($form){
$values = $form->values;
$this->invalidateControl('tabu');
$this->template->items = dibi::query("SELECT * FROM mylogin WHERE ID LIKE '%".$values['hledej']."%'");
}
?>
A takto to mám v sabloně.
<?php
{snippet tabu}
{foreach $items as $item}
<tr {!$iterator->isEven() ? 'class="even"' : 'class="odd"'}" onclick="Link({link this , id=>$item->id,'vp-page' => $curentPage,'order'=>$order});">
<td width="32">{$item->id}</td>
<td width="10" class="center">{!$item->stat=="1" ? "<img src=\"$basePath/images/stat1.png\"/>" : "<img src=\"$basePath/images/stat0.png\"/>"}</td>
<td>{$item->jmeno}</td>
<td>{$item->prava=="2" ? "Administrator" : "Uživatel"}</td>
</tr>
{/foreach}
{/snippet}
?>
javaskript:
<script>
$("input[name=hledej]").live("keyup", function(){
$(this).closest('form').submit();
});
</script>
nevím kde hledat chybku…
- bojovyletoun
- Člen | 667
- sql injection
správně …LIKE %s', ‚%‘.$value.‚%‘);
- hloupá otázka, ale máš nette.js?
3)jak to funguje na začátku, kde načteš stránku a form je prázdnáý?
- KillPrd
- Začátečník | 110
- děkuji
- mám
<?php
<script type="text/javascript" src="{$basePath}/js/jquery.js"></script>
<script type="text/javascript" src="{$basePath}/js/jquery.nette.js"></script>
<script type="text/javascript" src="{$basePath}/js/ajax.js"></script>
?>
- načtu stránku a form je prázdný datagird je již naplněný.
- KillPrd
- Začátečník | 110
Tak jsem pokročil a udělal jsem to same bez formuláře. Jeden problém
stále přetrvává a to že mi to nevrací hodnoty.
tedy udělal jsem nový script
<script>
$("#frmfilterForm-hledej").live('keyup', function(e){
$.get("do=test", {"value": $(this).val()});
});
</script>
pomocí něho volám onkeyup handleTest a v něm mám toto
<?php
public function handleTest($co)
{
$this->template->items = dibi::query("SELECT [*] FROM mylogin WHERE 1");
$this->invalidateControl('tabu');
}
?>
Stále by jste nikdo nevěděl?
- KillPrd
- Začátečník | 110
Další věc je že pokod nevracím array pole typu:
$this->template->items = dibi::query(„SELECT [*] FROM mylogin
WHERE 1“);
ale jen samostatnou zprávu tak a mimo tabulku do jineho snippetu tak to
funguje.
problém nastane v případě že to chci nacpat do místa kde jsou již
načtená data. a do tabulky jako takové.
takže se zdá že budu mnuset načítat celou šablonu s kusem kodu kde budou
již načtená data. bohužel nevím jak načíst celou sablonu ale kdyby jste
měl někdo řešení sem s ním…
- KillPrd
- Začátečník | 110
Tak ted se snažím načíst sablonu do daneho snippetu a ani to mi nejde.
<?php
$template = new Template;
$this->template->items = dibi::query("SELECT [id],[jmeno],[prava],[stat] FROM [mylogin] WHERE 1 ORDER BY ID");
if ($this->isAjax())
$this->template->setFile('tabulkaUsers.phtml');
$this->invalidateControl('sniptab');
?>
a sablona
<?php
{if isset($items)}
{foreach $items as $item}
<tr {!$iterator->isEven() ? 'class="even"' : 'class="odd"'}" onclick="Link({link this , id=>$item->id,'vp-page' => $curentPage,'order'=>$order});">
<td width="32">{$item->id}</td>
<td width="10" class="center">{!$item->stat=="1" ? "<img src=\"$basePath/images/stat1.png\"/>" : "<img src=\"$basePath/images/stat0.png\"/>"}</td>
<td>{$item->jmeno}</td>
<td>{$item->prava=="2" ? "Administrator" : "Uživatel"}</td>
</tr>
{/foreach}
{/if}
?>
jak zjisti zda se sablona nacte dkyž jí nevidím zda jí nejde.
Nemusím udělat nejaké routy?
Dále nemusím pridat snippety jeste do externí sablony?
- KillPrd
- Začátečník | 110
Tak jsem pokročil již uspěšně načtu data do externi sablony ale stále se mi nedaří načíst ji do snippetu
<?php
public function handleTest()
{
if ($this->isAjax())
$template = $this->template;
$template->setFile(APP_DIR . '/templates/tabulkaUsers.phtml');
$this->template->items = dibi::query("SELECT [id],[jmeno],[prava],[stat] FROM [mylogin] WHERE 1");
$template->render();
$this->invalidateControl('sniptab');
}
?>