Specificka routa a signal komponenty, wtf
- bazo
- Člen | 620
takto mam definovany router
<?php
$webRouter = new RouteList('Front');
$webRouter[] = new Route('index.php', 'Homepage:Default', Route::ONE_WAY);
$webRouter[] = new Route('/', 'Homepage:default', $useHttps ? Route::SECURED : 0);
$webRouter[] = new Route('/inzerat/<id>/<slug>', 'Detail:default', $useHttps ? Route::SECURED: 0);
$webRouter[] = new Route('/favorites', 'Homepage:favorites', $useHttps ? Route::SECURED: 0);
$webRouter[] = new Route('<presenter ^(?!.*detail).*$>/<action>[/<id>]', 'Homepage:default', $useHttps ? Route::SECURED: 0);
?>
odkazy napriamo mi generuje krasne
<?php
{link Detail: id => $listing->id, slug => $listing->slug} => inzerat/55e5f286b0d02aa01d0007b4/nadpis
?>
v komponente mam link na signal
<?php
<a n:href="open!">otvor</a>
?>
ked sa nachadzam na url inzerat/55e5f286b0d02aa01d0007b4/nadpis, cize presenter je Detail, id aj slug su spravne naplnene
tak komponenta generuje odkaz pomocou default routy a dostanem
**/detail/default/55e5f286b0d02aa01d0007b4?do=facebookButton-open **
tento odkaz samozrejme nie je funkcny
ak zakazem pre default routu hodnotu presentera detail
<?php
<presenter ^(?!.*detail).*$>
?>
tak mi nettecko zahlasi Invalid link: No route for Front:Detail:default(id=55e5f286b0d02aa01d0007b4, do=facebookButton-open)
a teraz neviem, ci som blby ja, alebo to proste nejde. ale takto nemozem mat fb login alebo inu komponentu na stranke detailu, co je dost nanic.
za kazdu radu dakujem
edit: takze robi pre hociaky signal, aj pre signal priamo z presenteru
Editoval bazo (3. 9. 2015 22:14)
- David Grudl
- Nette Core | 8218
Prenaseji se parametry:
- uvedene v linku
- persistentni
- v pripade signalu (nebo
this
) take parametry, ktere ma v signature prislusna metoda renderXyz() nebo actionXyz()
Takze resení je:
- uvest ty parametry v link (u komponent nevhodne)
- nastavit je jako persistentni
- pridat je do signatury renderDetail (asi nejvhodnejsi)
- David Matějka
- Moderator | 6445
v pripade signalu take parametry, ktere ma v signature prislusna metoda renderXyz()
jeste doplnim: action* metody jsou preferovany pred render* metodama.
A tenhle bod plati nejen pro signal, ale i pro odkazovani
na this
- David Grudl
- Nette Core | 8218
@DavidMatějka díky, doplnil jsem to
@Lukeluha Nette urcite parametr id nijak nevyuziva.