Multiplier více než jeden parametr
- Miri
- Člen | 117
Ahoj, snažím se vytvořit komponentu, která by v šabloně předávala 2 parametry.
Zkoušel jsem toto:
Presenter
protected function createComponentMagicEvent() {
$presenter = $this;
$control = new UI\Multiplier(function ($type, $team) use ($presenter) {
$control = new NextEvent($presenter->models, $presenter->values);
$control->setType($type);
$control->setTeam($team);
return $control;
});
return $control;
}
Template:
{control magicEvent-5-7}
Ale hlástí mi to stále chybu: Component with name ‚7‘ does not
exist
Nejspíš jsem to špatně pochopil, nebo někde dělám chybu, prosím vás
o radu.
Díky Míra
- voda
- Člen | 561
Můžeš použít Multiplier dvakrát:
protected function createComponentMagicEvent() {
$presenter = $this;
return new UI\Multiplier(function ($type) use ($presenter) {
return new UI\Multiplier(function($team) use ($presenter, $type) {
$control = new NextEvent($presenter->models, $presenter->values);
$control->setType($type);
$control->setTeam($team);
return $control;
});
});
}
- David Matějka
- Moderator | 6445
nebo udelat vlastni multiplier, ktery bude posilat vic parametru – bude nutno prekryt i metodu getComponent
- Vojtěch Dobeš
- Gold Partner | 1316
Primární podstatou Multiplieru je vytvoření více instancí komponenty se stejnou továrničkou, ne předávání parametrů z šablony. Pokud je třeba jej takto využít, vícenásobné vnoření Multiplieru je podle mě ideálním řešením. Pokud jsem ve zdrojácích nic nepřehlédnul, neměl by by být problém udělat jméno jako toto:
magicEvent-5+7
S továrničkou:
protected function createComponentMagicEvent()
{
$presenter = $this;
$control = new UI\Multiplier(function ($arg) use ($presenter) {
list($type, $team) = explode('+', $arg);
$control = new NextEvent($presenter->models, $presenter->values);
$control->setType($type);
$control->setTeam($team);
return $control;
});
return $control;
}
Je ale třeba mít na paměti, že je to jen zneužití toho, jak Multiplier funguje :).