routa pro link setAffilate!
- MzK
- Člen | 127
Nedaří se mi vytvořit routa pro akci..
Pro stránku routu umím vytvořit.
<?php
$router[] = new Route('<page>', array(
'presenter' => 'Page',
'action' => 'default',
));
?>
To jde, pokud mám pro tu stránku presenter.
Ale pak je tu akce, pro kterou nemám presenter ani šablonu… fci mám
v basePresenter(u).
<?php
public function handleSetAffilate($src) {
$affilate = new AffilateModel();
$affilate->SetAffilate($src);
$this->redirect('default:');
}
?>
A {link SetAffilate! 56}
mi zobrazí toto:
/tarify?id=56&do=SetAffilate
A já bych z toho potřeboval
lepší URL např: /ref/56
. Jak na to?
- MzK
- Člen | 127
To nefunguje…
Zkusím to vysvětlit jinak:
V šabloně mi tento příkaz {link SetAffilate! 56}
vypíše toto:
/?id=56&action=admin&do=SetAffilate&presenter=Affilate
a nebo toto /?id=56&do=SetAffilate
pokud sem na hlavní
stránce.
Čili podle toho kde se zrovna nacházím…
A já bych potřeboval místo
/?id=56&action=admin&do=SetAffilate&presenter=Affilate
vypsat přes routu třeba /aff/56
nebo /?id=56
to je
celkem jedno…
- Ondřej Mirtes
- Člen | 1536
Ano, gmvasek ti sem napsal routu, kterou máš napsat místo té tvé, aby to
fungovalo :) Není na tom nic složitého, prostě musíš do routy uvést
parametr <do>
a dát ho jako nepovinný.
- MzK
- Člen | 127
No těch rout tam musí být víc…
tyto používám do teď: Já vím, možná je jich zbytečně hodně, ale líp
to udělat neumím :(
<?php
$router = Environment::getApplication()->getRouter();
$router[] = new Route('index.php', array(
'presenter' => 'Default',
'action' => 'default',
), Route::ONE_WAY);
$router[] = new Route('', array(
'presenter' => 'Default',
'action' => 'default',
));
$router[] = new Route('sitemap.xml', array(
'presenter' => 'Sitemap',
'action' => 'default',
));
$router[] = new Route('robots.txt', array(
'presenter' => 'RobotsTxt',
'action' => 'default',
));
$router[] = new Route('objednavka/<domain>', array(
'presenter' => 'Domain',
'action' => 'default',
'domain'=> NULL
));
$router[] = new Route('objednavka2/<domain>', array(
'presenter' => 'Domain',
'action' => 'registertwo',
'domain'=> NULL
));
$router[] = new Route('<page>', array(
'presenter' => 'Page',
'action' => 'default',
));
$router[] = new Route('s/monitoring', array( // to 's/' tam musí být kvůli kompatibilitě s <page>
'presenter' => 'Monitoring',
'action' => 'default',
));
$router[] = new Route('affilate/default', array(
'presenter' => 'Affilate',
'action' => 'default',
));
$router[] = new Route('affilate/admin', array(
'presenter' => 'Affilate',
'action' => 'admin',
));
?>
A potřebuji přidat routu pro /?id=56&do=SetAffilate
- MzK
- Člen | 127
Pokud
<?php
//Místo
$router[] = new Route('', array(
'presenter' => 'Default',
'action' => 'default'
));
udělám toto:
$router[] = new Route('<do>/<id>', array(
'presenter' => 'Default',
'action' => 'default',
'do' => NULL,
'id' => NULL,
));
?>
Tak mi to sice funguje na defaultu:/SetAffilate/56
, Ale ostatní
routy
nefungují… There is no handler for signal 'tarify' in DefaultPresenter class.
Editoval zacatecnik (29. 3. 2010 23:11)