Neúplný výpis dat z databáze
- iskejp
- Člen | 41
Zdravím, dovolte mi položit začátečnickou otázku. Snažím se přijít na to, proč mi Nette nevypisuje celou tabulku dat z DB, ale pouze poslední řádek. Pokud vymažu cache, přihlásím se a nechám si vypsat tabulku je vše OK. Jakmile ovšem stránku byť jen reloadnu zobrazí se opět pouze poslední záznam.
Laděnka hlásí, že jsou načtené všechny záznamy (rows). Zkoušel jsem již různě manipulovat s proměnnými i šablonou, ale bez výsledku.
Díky za odpověď.
- iskejp
- Člen | 41
Ano, foreach používám. Ostatně, jak jsem psal. Při vymazaní cache to funguje normálně. Až po obnovení to selže.
EDIT: Zjistil jsem, že ve výpisu 4 proměnných pole jsou 3 s NULL a jedno poslední s TRUE.
Zde je kód. Jde vlastně o parafrázi quickstartu…
komponenta: (zkoušel jsem to i bez komponent)
use Nette\Application\UI,
Nette\Database\Table\Selection;
class ArticleList extends UI\Control {
private $articleList;
public function __construct(Selection $articles){
parent::__construct();
$this->articleList = $articles;
}
public function render(){
$this->template->setFile(__DIR__.'/ArticleList.latte');
$this->template->article = $this->articleList;
$this->template->render();
}
}
presenter:
public function createComponentArticleList() {
$articles = $this->context->createArticles()->
where(array('user_iduser' => $this->getUser()->getId()));
$articleList = new ArticleList($articles, $this->context->createArticles());
return $articleList;
}
šablona:
<table>
<thead>
<tr>
<th>Čas vytvoření</th>
<th>Nadpis</th>
<th>Perex</th>
<th>Type</th>
</tr>
</thead>
<tbody>
{foreach $article as $articleMember}
<tr>
<td>{$articleMember->inserttime|date:'j. n. Y'}</td>
<td>{$articleMember->title}</td>
<td>{$articleMember->perex}</td>
<td>{$articleMember->user->name}</td>
</tr>
{/foreach}
</tbody>
</table>
Editoval iskejp (10. 4. 2012 1:01)
- iskejp
- Člen | 41
Zkoušel jsem opět napravit chybu, ale bez úspěchu. Vkládám DUMP proměnných.
ArticleList(10) ▼ {
articleList private => Articles(23) ►
template private => NULL
invalidSnippets private => array(0)
snippetMode => NULL
params protected => array(0)
components private => array(0)
cloning private => NULL
parent private => NULL
name private => NULL
monitors private => array(1) ▼ {
"Nette\Application\UI\Presenter" => array(4) ▼ [
0 => NULL
1 => NULL
2 => NULL
3 => TRUE
]
}
}
Díky všem za případnou pomoc.
- jtousek
- Člen | 951
Na mě to působí jako další problém s cache Nette\Database. Už se jich tady na fóru řešilo několik. Asi by to chtělo nějaký minimální test-case kde k té chybě dochází.
EDIT: Verze Nette? Zkoušel jsi aktuální dev z GitHubu? Může klidně jít o něco již opraveného.
Editoval jtousek (30. 4. 2012 23:21)