Jméno komponenty nesmí být prázdný řetězec
- fary
- Člen | 155
Rád bych se zeptal na jednu věc ohledně komponent. Měl jsem třídu
komponenty i se šablonou, tedy MyControl.php
a
MyControl.latte
. Ve třídě jsem nastavil pole, které se
skládalo z asociativních indexů ve formátu :Module:Presenter:
a na nich byly uloženy názvy odkazů. Zběžně to vypadalo nějak takto:
MyControl.php
class MyControl extends Nette\Application\UI\Control
{
private $sections = array();
public function render()
{
$this->template->setFile(__DIR__ . '/MyControl.latte');
$this->template->sections = $this->sections;
$this->template->render();
}
public function setSection($link, $name)
{
$this->sections[$link] = $name;
}
}
MyControl.latte
<ul>
<li n:foreach="$sections as $link => $name"><a n:href="$link">{$name}</a></li>
</ul>
Ať už jsem dělal cokoli, pořád dokola se mi objevovala hláška:
Component or subcomponent name must not be empty string
.
Zlepšilo se to teprve až poté, co jsem šablonu kompoennty změnil na:
<ul>
<li n:foreach="$sections as $link => $name"><a href="{plink $link}">{$name}</a></li>
</ul>
Tedy místo n:href
jsem použil plink
. Mohl by mi
prosím někdo vysvětlit, co bylo špatně?
- mkoubik
- Člen | 728
Makro n:href=".."
je vlastně
<a href="{link ...}">
, neboli
$control->link()
, takže generuje odkaz na komponentu. Odkaz na
presenter se generuje pomocí $presenter->link()
, nebo
{plink ...}
, atributové makro pro to neexistuje.
V šabloně presenteru to funguje, protože tam
$presenter === $control
.
Editoval mkoubik (2. 6. 2014 22:00)