Generovaní odkazů s proměnnou z databáze

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Fyasko
Člen | 106
+
0
-

Ahoj. Mohl by někdo navést ke správnému řešení?

Generuju odkazy v komponentě z databáze. Takže vytáhnu data a k názvu přiřadím presenter a akci, ale když přidám parametr id, vrátí se mi error:

Invalid link: No route for Admin:Homepage:default ‚test‘()

Mohl by někdo poradit jak správně do databáze zapsat ten odkaz? Pro jistotu přikládám způsob výpisu

<?php
<div class="component">
    <div class="admin-navigation-title">Možnosti</div>
    {foreach $section as $s}
    <div class="admin-nav-title">{$s->name}</div>
    <ul class="admin-nav">
	{foreach $subSection as $sc}
	{if $s->id == $sc->section}
	    <a href="{plink :Admin:$sc->url}"><li>{$sc->name}</li></a>
	{/if}
	{/foreach}
    </ul>
    {/foreach}
</div>
?>

Všem předem díky za rady :)

CZechBoY
Člen | 3608
+
0
-

A jakej je třeba obsah v tom $sc->url?

F.Vesely
Člen | 369
+
+2
-

Tipicka chyba, musis ty parametry oddelit zvlast.

<a href="{plink $sc->presenterAction $sc->parameters}">...

Editoval F.Vesely (10. 12. 2015 13:25)

iNviNho
Člen | 352
+
0
-

Ahoj, možno pomôže:

<a n:href=":Admin:Seo:editSeo $s->getId()" ><span class="glyphicon glyphicon-edit"></span> Upraviť</

Editoval iNviNho (10. 12. 2015 12:19)

Fyasko
Člen | 106
+
0
-

@CZechBoY v té proměnné je vždy presenter:action.
@F.Vesely No problém to nebude, ale raději bych celý odkaz v jednou sloupci.

CZechBoY
Člen | 3608
+
0
-

A jak poznáš ty parametry, když máš uloženy jen Presenter:action?

Fyasko
Člen | 106
+
0
-

@CZechBoY to je oč tu běží. Chci právě do databáze uložit nejen Presenter:action, ale také parametr/parametry. :)

Zkoušel jsem Presenter:action ‚param‘, Presenter:action param, Presenter:action, param,ale ani jedna možnost není správná :D

vitkutny
Člen | 73
+
+1
-

Uložení v databázi:

  • link
    • id
    • destination
  • link_parameters
    • id
    • link_id
    • key
    • value

Použití v šabloně

<a href="{plink $link->destination (expand) $link->parameters->fetchPairs('key', 'value')}">

Osobně používám jednodušší variantu

<a n:href="$link">
<a n:href="$product->link">
<a n:href="$page->link">

a v BasePresenteru v createRequest provedu rozdělení $destination a $args (https://github.com/…resenter.php#L48)

vitkutny
Člen | 73
+
0
-

případně můžeš mít vše v jedné tabulce

  • link
    • id
    • destination
    • parameters

kde do parameters budeš serializovat pole parametrů

<a href="{plink $link->destination (expand) unserialize($link->parameters)}">
Fyasko
Člen | 106
+
0
-

Skvělé, sice jsem to nenarval do jednoho sloupce, ale když nad tím teď přemýšlím, takhle je to určitě lepší. Děkuju všem zúčastněným :)