Notice „Array to string conversion“ při vykreslení prvku – PHP 5.4
- grogy
- Člen | 147
Zdravím,
vykresluji manuálně v komponentě formulářové prvky. Při vykreslení komponenty (input) se vyhodí notice – „Array to string conversion“.
Problémový kód:
{dump $form['filtrs']->getControls()}
{* -----------------------
Nette\Iterators\InstanceFilter(1) ▼ {
type private => "Nette\Forms\IControl" (20)
----------------------- *}
{foreach $form['filtrs']->getControls() as $filterControl}
{dump $filterControl}
{* -----------------------
Nette\Forms\Controls\TextInput(16) ▼ {
emptyValue protected => "",
...
----------------------- *}
<th>{!$filterControl->getControl()}</th> {* ZDE JE PROBLEM *}
{/foreach}
Technologie:
- PHP 5.4.11
- Nette 2.0.8
Věděli byste, prosím, co s tím? Chování se mi zdá jako chybné, ale pro jistotu to chci napřed konzultovat.
- grogy
- Člen | 147
redhead napsal(a):
Souhlas.
vvoody napsal(a):
public function createComponentForm()
{
$form = new Nette\Application\UI\Form();
$form->setMethod('get');
$group = $form->addContainer('filtrs');
foreach ($this->filters as $k => $v) {
$value = "value";
$group->addText($k)->setAttribute('data-type', $v)->setValue($value);
}
$form->onSuccess[] = array($this, 'submitted');
return $form;
}
Před aktualizací knihoven jsem vykresloval pomocí
{$form['filtrs'][$column['atr']]->control}
.
Edit:
Formulář předávám v render() konponenty pomocí
$template->form = $this->getComponent('form');
.
Editoval grogy (12. 2. 2013 13:57)
- stefi023
- Člen | 71
Neni nahodou v tom
$group->addText($k)->setAttribute('data-type', $v)->setValue($value);
ten parametr $v
nejake pole? a nemelo by se ten data atribut
zapsat trochu jinak?
treba:
$group->addText($k)->setAttribute('data-type', json_encode($v))->setValue($value);
myslel jsem si totiz na tento (string) conversion, parkrat me take nachytal, ale mozna to neni tvuj problem :)
Editoval stefi023 (12. 2. 2013 17:16)