Problem s: Invalid link: No route v n:href makru

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

V presenteri Homepage mam metodu:

<?php
public function renderCongres($congresID,$congresCode, $congresName, $actualPage)
?>

V presenteri User posielam do template takyto array linkov

<?php
$users = $this->database->table($congresCode.'_participants')->select('name, surname')->where('id = ?', $userID)->limit(1);
        $userName;
        $userSurname;

        foreach ($users as $user ) {
            $userName = $user->name;
            $userSurname = $user->surname;
        }

        $link = 'Homepage:congres '.$congresID.', '.$congresCode.', '.$congresName.', 1';

        $this->template->breads =
                array('Kongresy' => 'Homepage:default',
                    $congresName => $link,
                    $userName.' '.$userSurname => ''
                    );
?>

a latte cast ktora to prijima vyzera takto

<?php
<ol class="breadcrumb" n:if="$user->loggedIn">
            {foreach $breads as $name => $link}
              {if $link==''}
                <li class="active">{$name}</li>
              {else}
                <li><a n:href="$link">{$name}</a></li>
              {/if}
            {/foreach}
          </ol>
?>

a stale to vyhadzuje chybu
"Invalid link: No route for Homepage:congres 2, neuro, Neurológia, 1()"nechapem vobec preco metoda renderCongres v presenteri Homepage je a tie parametre tam su…

Editoval figurluk (4. 6. 2015 21:32)

David Matějka
Moderator | 6445
+
0
-

nemuzes to tam takhle poslat jako retezec, musis oddelit identifikator presenteru a akce (tzn Homepage:congres) a parametry jako pole.
v sablone pak:

<a n:href="$link (expand) $args">

Alternativou by bylo pouzit query syntax (ta byla chvili deprecated, ted uz zas neni), tam posles retezec ve tvaru Presenter:action?param=value&param2=value2

Azathoth
Člen | 495
+
0
-

zkus ty parametry poslat jako asociativní pole místo tohohle výčtu

Unlink
Člen | 298
+
+1
-

Alebo vytvor ten link v presenteri…

figurluk
Člen | 61
+
0
-

David Matějka napsal(a):

nemuzes to tam takhle poslat jako retezec, musis oddelit identifikator presenteru a akce (tzn Homepage:congres) a parametry jako pole.
v sablone pak:

<a n:href="$link (expand) $args">

Alternativou by bylo pouzit query syntax (ta byla chvili deprecated, ted uz zas neni), tam posles retezec ve tvaru Presenter:action?param=value&param2=value2

Takze ako to mam mat teda v Presenteri a ako v latte prosim Ta :) nemam tolko skusenosti

figurluk
Člen | 61
+
0
-

figurluk napsal(a):

David Matějka napsal(a):

nemuzes to tam takhle poslat jako retezec, musis oddelit identifikator presenteru a akce (tzn Homepage:congres) a parametry jako pole.
v sablone pak:

<a n:href="$link (expand) $args">

Alternativou by bylo pouzit query syntax (ta byla chvili deprecated, ted uz zas neni), tam posles retezec ve tvaru Presenter:action?param=value&param2=value2

Takze ako to mam mat teda v Presenteri a ako v latte prosim Ta :) nemam tolko skusenosti

a preco to vobec v inych latte funguje ked mam napisane:

<?php
<a n:href="congres $row->id, $row->code, $row->name, 1" class="footer-link">
?>

Editoval figurluk (4. 6. 2015 22:06)

Unlink
Člen | 298
+
+1
-

Najjednoduchšie bude vygenerovať ten link v presentery

$link = $this->link('Homepage:congres', array($congresID, $congresCode, $congresName, 1));

Respektíve ak chceš linky robiť až v latte tak

$link = 'Homepage:congres';
$args = array($congresID, $congresCode, $congresName, 1);

        $this->template->breads =
                array('Kongresy' => 'Homepage:default',
                    $congresName => array($link, $args),
                    $userName.' '.$userSurname => ''
                    );
<a n:href="$link[0] (expand) $link[1]">

Bolo tu na fóre pekné vysvetlenie prečo to nejde (od @dg) ale neviem to nájsť.

jediné čo som našiel bolo toto
https://forum.nette.org/…t-z-databaze#…

Editoval Unlink (4. 6. 2015 22:24)

figurluk
Člen | 61
+
0
-

Unlink napsal(a):

Najjednoduchšie bude vygenerovať ten link v presentery

$link = $this->link('Homepage:congres', array($congresID, $congresCode, $congresName, 1));

Respektíve ak chceš linky robiť až v latte tak

$link = 'Homepage:congres';
$args = array($congresID, $congresCode, $congresName, 1);

        $this->template->breads =
                array('Kongresy' => 'Homepage:default',
                    $congresName => array($link, $args),
                    $userName.' '.$userSurname => ''
                    );
<a n:href="$link[0] (expand) $link[1]">

Bolo tu na fóre pekné vysvetlenie prečo to nejde (od @dg) ale neviem to nájsť.

jediné čo som našiel bolo toto
https://forum.nette.org/…t-z-databaze#…

ked som to dal podla toho proveho tak mi to dalo: Query syntax is deprecated.

a prave ja potrebujem ten link vytvorit uz v presenteri v podstate a v latte ho len umiestnit do n:href

David Matějka
Moderator | 6445
+
+1
-

@figurluk kdyz vygenerujes odkaz v presenteru, tak uz to neposilej v sablone do n:href

figurluk
Člen | 61
+
0
-

David Matějka napsal(a):

@figurluk kdyz vygenerujes odkaz v presenteru, tak uz to neposilej v sablone do n:href

a do coho to mam dat ?
len do klasickeho href ?

Editoval figurluk (4. 6. 2015 22:45)

David Matějka
Moderator | 6445
+
+1
-

jen href="{$link}"

//opraveno

figurluk
Člen | 61
+
0
-

David Matějka napsal(a):

jen href="$link"

no tak som to urobil ale teraz to vygeneruje <a href=„$link“>

presenter:

<?php
$this->template->breads =
                array('Kongresy' => $this->link('Homepage:default'),
                    $congresName => $this->link('Homepage:congres', array($congresID, $congresCode, $congresName, 1)),
                    $userName.' '.$userSurname => ''
                    );
?>

latte:

<?php
{foreach $breads as $name => $link}
              {if $link==''}
                <li class="active">{$name}</li>
              {else}
                <li><a href="$link">{$name}</a></li>
              {/if}
            {/foreach}
?>
figurluk
Člen | 61
+
+1
-

aha jasne tam musi byt {$link} dakujem