Vlastny render radioListu error
- TheRiseAgainst
- Člen | 21
Ahojte, snazim sa renderovat radioList, no stale mi to hadze error: Component with name ‚transfer:key‘ does not exist.
<?php
{foreach $form['transfer']->items as $key => $label}
<div class="radio">
{input transfer:$key}
{label transfer:$key /}
</div>
{/foreach}
?>
pricom je to zaregistrovane:
<?php
$form->addRadioList('transfer', 'Transfer:', $options)
?>
Tu istu chybu hadze aj ked to chcem vypisat takto:
{input transfer:$key}
Viete mi poradit kde je prosim chyba? Diky.
- TheRiseAgainst
- Člen | 21
@CZechBoY
<?php
$options = array(
'cash' => 'Cash',
'bank' => 'Bank',
'both' => 'Both'
);
?>
Editoval TheRiseAgainst (28. 4. 2018 10:41)
- TheRiseAgainst
- Člen | 21
@Šaman Tu je ta cast co robi problem, okrem toho mam v kode este zopar podobnych selectov a tiez aj toho kopu obycajnych inputov ktore su normalne zaregistrovane a funguju.
<?php
protected function createComponentContract()
{
$form = new UI\Form;
$options = array(
'cash' => 'Cash',
'bank' => 'Bank transfer',
'both' => 'Both cash and transfer'
);
$form->addRadioList('transfer', 'Transfer:', $options)
->setDefaultValue('cash');
$form->onSuccess[] = $this->contractSubmitted;
return $form;
}
?>
Editoval TheRiseAgainst (28. 4. 2018 13:49)
- MajklNajt
- Člen | 516
ešte ma napadlo, či nemáš ten RadioList náhodou attachnutý do kontajneru, potom by si mal iterovať cez
{foreach $form['nazovkontajneru-transfer']->items as $key => $label}
<div class="radio">
{input nazovkontajneru-transfer:$key}
{label nazovkontajneru-transfer:$key /}
</div>
{/foreach}
- TheRiseAgainst
- Člen | 21
@MajklNajt Ano cez {input transfer}
to funguje takto to
mam teraz, lenze sa renderuju hned za sebou.
V kontajneri by to nemalo byt, hore je v podstate cely kod, okrem toho su tam
len dalsie inputy v tom komponente. Ako by sa inac potom ten kontajner volal ak
by bol?
Skusal som aj nazov komponentu ale nefunguje to. Cokolvek je v tom v tom foreach ako pole vyhodi chybu: Component with name ‚cokolvek‘ does not exist.
Editoval TheRiseAgainst (28. 4. 2018 20:39)
- MajklNajt
- Člen | 516
Vyskúšal som ten tvoj spôsob, a mne to frčí… máš Nette 2.4? Skús prípadne ešte podľa príkladu z dokumentácie cez n:name
{foreach $form['transfer']->items as $key => $label}
<div class="radio">
<label n:name="transfer:$key"><input n:name="transfer:$key"> {$label}</label>
</div>
{/foreach}
- TheRiseAgainst
- Člen | 21
Nemam 2.4, mam 2.0 nieco. Ani tento priklad nefunguje. Je mozne potom ze to bude verziou, ale ved je to len jednoduchy foreach tak preco to nefunguje? A co som googlil ten problem tak sa riesil tento partial rendering v nejakej teme pred 6 rokmi cize som myslel ze to podporuje. Fakt neviem.
- Šaman
- Člen | 2668
V těch ukázkách chybu nevidím. Asi by bylo nejlepší ji zkusit izolovat (nový projekt s jediným formulářem s tím radioListem) a pokud se bude projevovat stále (imho ne), tak to nasdílet třeba na GitHubu.
Pro jistotu se ještě zeptám – pokud tenhle input zakomentuješ,
formulář funguje? A zkoušel sis dumpnout
$form['transfer']->items
, $key
a
$label
?
- MajklNajt
- Člen | 516
TheRiseAgainst napsal(a):
Nemam 2.4, mam 2.0 nieco. Ani tento priklad nefunguje. Je mozne potom ze to bude verziou, ale ved je to len jednoduchy foreach tak preco to nefunguje? A co som googlil ten problem tak sa riesil tento partial rendering v nejakej teme pred 6 rokmi cize som myslel ze to podporuje. Fakt neviem.
čo tak pozerám, partial render prišiel až vo verzií 2.1, čiže presne tu bude problém
- TheRiseAgainst
- Člen | 21
@Šaman Ked ho zakomentujem tak formular funguje. Ked dam dump items tak zobrazi spravne array s 3 moznostami. Cize toto je ok.
@MajklNajt Ach jaj, moja chyba potom, tak to musim vyriesit inak, je to stary projekt a ja som to nerobil takze nechcem do toho babrat a upgratovat to na 2.4 ked tam asi bude treba vela veci opravovat v kode.
Edit: Hej mas pravdu, sry ze som otravoval s tymto.
Editoval TheRiseAgainst (28. 4. 2018 22:08)
- MajklNajt
- Člen | 516
To nie je otravovanie, preto sem chodíme, aby sme si pomáhali :)
Stačilo by ti migrovať na 2.1. Neviem, do akej miery je ten partial rendering pre teba dôležitý, ale tu si pozri veci, ktoré sú nekompatibilné s 2.0, a teoreticky stačí fixnúť iba to: