Šablona v pomocí komponenty
- petrkasnal
- Člen | 42
Čus guys. Mám takový problém a to je při výpisu příspěvků. Mam třídu WritePostsFactory, kde se odkazuju na šablonu ve které se objevuje i tento kód:
<td><button type="button"><a n:href="show, $post->id">Zobrazit</a></button></td>
A aplikace mi po spuštění vyhodí tuto chybu:
Invalid link: Unknown signal 'show', missing handler App\Forms\WrtiteProjectsFactory::handleshow()
Nevíte někdo co s tím prosím ?
- ali
- Člen | 342
Chybi ti v tride App\Forms\WrtiteProjectsFactory metoda handleshow
edit
Typuju ze se chces odkazovat na nejakou akci prezenteru, tak to musis napsat
korektne
<td><button type="button"><a n:href="Presenter:action, $post->id">Zobrazit</a></button></td>
Editoval ali (13. 7. 2017 7:55)
- petrkasnal
- Člen | 42
Dík za odpověď. Myslíš tím, že to má být tkhle ?
<td><button type="button"><a n:href="Homepage:show, $project->id">Zobrazit</a></button></td>
Takhle mi to nefunguje…
chyba: Component with name ‚Project‘ does not exist.
Editoval petrkasnal (13. 7. 2017 10:05)
- Zuben45
- Člen | 268
petrkasnal napsal(a):
Dík za odpověď. Myslíš tím, že to má být tkhle ?
<td><button type="button"><a n:href="Homepage:show, $project->id">Zobrazit</a></button></td>
Takhle mi to nefunguje…
chyba: Component with name ‚Project‘ does not exist.
však to už je další a jiná chyba ;)
- petrkasnal
- Člen | 42
Ajo ale furt nevím co s ní.. Nebo teda chápu co ta chyba znamená, ale nevím jak jí ppravit
- petrkasnal
- Člen | 42
Hele asi si uplně nerozumíme…
Mam třídu WritePostsFactory kde mám tento kód:
public function render($posts) {
$template = $this->template;
$template->setFile(__DIR__.'/../presenters/templates/Homepage/WritePosts.latte');
$template->posts = $posts;
$template->render();
}
A je uložená v app/forms
Dále mám šablonu na kterou odkazuje:
<td><div>{$post->id}</div></td>
<td><div>{$post->name}</div></td>
...
Pak si vytvořím nový objekt třídy WritePostsFactory v Homepage, díky tomu vytvořím komponentu a tu si zavolám v default.latte.
- petrkasnal
- Člen | 42
Dobře tady je
{block content}
<table>
<div n:foreach="$posts as $post">
<tr>
<td><div>{$post->id}</div></td>
<td><div>{$post->name}</div></td>
<td><div>{$post->type}</div></td>
<td><button type="button"><a n:href="show, $post->id">Zobrazit</a></button></td> <!-- Toto nefunguje -->
</tr>
</div>
</table>
{/block}
Editoval petrkasnal (13. 7. 2017 13:06)
- petrkasnal
- Člen | 42
Promiň má tam být: Component with name ‚Homepage‘ does not exist. Je to něco jiného promiň
Jinak metoda renderShow vypadá takto:
public function renderShow($postId) {
$this->template->post = $this->postManager->getRecordById($postId);
}
Tato metoda je umístěna v Homepage
- newPOPE
- Člen | 648
@petrkasnal okej tak ked tam mas ... Homepage ...
tipujem, ze to bude problem kedys a odkazujes na komponentu ktora neexistuje ale
myslis tym presenter. Cize prepisat na:
<a href="{plink Homepage ...}">...</a>
n:href
funguje len na „sam na seba“ alebo subkomponenty.
Neda sa cez neho odkazovat na Presentery alebo nadradene komponenty myslim.
- petrkasnal
- Člen | 42
Ježiš tk to je super díky moc ! Todle jsem potřeboval takže dvě mouchy jednou ranou děkuju moc :) funguje :)