Link a pole url url adres
- marau
- Člen | 50
Dobrý den,
rád bych nějak elegantně vyřešil předávání pole adres (předem neznám
počet těchto url) na presenter. Mám například následující:
{var $urls = array('spotrebice', 'kuchyne', 'varice')}
{plink Categories:default $urls}
V presenteru bych si to v action odchytil například:
<?php
.....
public function actionDefault($urls)
{
\dump($urls); //array('spotrebice', 'kuchyne', 'varice')
}
.....
?>
A pomocí routy bych nějakým způsobem řekl, že se mezi parametry má vložit znak /. Je toto možné? Díky,
- Filip Procházka
- Moderator | 4668
$router[] = new Route('/kategorie/<kategorie .*?>/', array(
'presenter' => 'Categories',
'action' => 'default',
'kategorie' => array(
Route::VALUE => NULL,
Route::FILTER_IN => function($kategorie) { return explode('/', $kategorie); },
Route::FILTER_OUT => function($kategorie) { return implode('/', $kategorie); }
) // možná to bude chtít trochu si pohrát s těmi filtry
));
šablona
{plink Categories:default, 'kategorie' => ['spotrebice', 'kuchyne', 'varice']}
<!-- nebo pokud máš údaj v nějaké proměnné -->
{plink Categories:default, 'kategorie' => $kategorie}
vygeneruje
/kategorie/spotrebice/kuchyne/varice/
presenter
class Categories extends BasePresenter
{
/** @persistent */
public $kategorie = array();
public function renderDefault()
{
dump($this->kategorie);
}
}
ps: pokud uvedeš v presenteru parametr, pak ho nebudeš muset pojmenovávat v odkazech
public function renderDefault($kategorie)
{plink Categories:default, ['spotrebice', 'kuchyne', 'varice']}
Editoval HosipLan (19. 12. 2010 15:50)
- Oggy
- Člen | 306
krissott napsal(a):
Zkoušel jsem to naprosto stejně, ale tady se mi to zastavi:
<?php Route::FILTER_OUT => function($kategorie) { return implode('/', $kategorie); } ?>
Kategorie je NULL. Nemela vy se Route::VALUE nastavit jinak nez na NULL?
řeším podobný problém.. a taky je v tomto řešení proměnná $kategorie NULL namísto pole.
marau: tobě to funguje?
- bojovyletoun
- Člen | 667
Asi jsem našel problém , proč to nejde. Pokud parametr není skalární, tak k překladu nedojde. Pokud tu podmínku vynechám, tak to funguje.
Má to svůj důvod? mě teď žádný nenapadá (maximálně, že je nutné vždy uvést u neskalárního parametru Filtr_OUT, který z něj vytvoří string)
Editoval bojovyletoun (24. 2. 2011 18:42)