Při použití ->getValues() formulář nevrací hodnoty
- eldest
- Člen | 58
Zdravím,
mám vytvořenou továrničku:
public function createComponentEdit()
{
$form = new AppForm;
$defs = new ListModel;
$defaults = $defs->vyber($this->getParam('edit'))->fetch();
$renderer = $form->getRenderer();
$renderer->wrappers['form']['container'] = NULL;
$renderer->wrappers['form']['errors'] = FALSE;
$renderer->wrappers['group']['container'] = NULL;
$renderer->wrappers['group']['label'] = 'h3';
$renderer->wrappers['pair']['container'] = NULL;
$renderer->wrappers['controls']['container'] = NULL;
$renderer->wrappers['control']['container'] = 'td';
$renderer->wrappers['control']['errors'] = TRUE;
$renderer->wrappers['label']['container'] = NULL;
foreach ($this->template->set['col'] as $key => $col)
{
$form->addText($col['field'], '')->getLabelPrototype()->class('hidden');
}
$form->addSubmit('send', 'Ulož');
$form->onSubmit[] = callback($this, 'formEditSubmitted');
$form->setDefaults($defaults);
return $form;
}
v template mám
{widget edit}
a zpracovávám touto metodou:
if($form['send']->isSubmittedBy())
{
$val = $form->getValues();
Debug::dump($val);
die();
}
vrací
array(0)
Víte někdo, co tam mám za chybu ? Předem díky za odpovědi
- westrem
- Člen | 398
Si si isty, ze sa ti pri potvrdeni formularu, tzn. pri novom requeste vytvori
rovnaky formular? Teda v tvojom pripade sa jedna o rovnake naplnenie pola
$this->template->set['col']
, pretoze ocividne submit
podmienka zbehne ale formular nema ziadne polia odkial by mal brat hodnoty.
- Patrik Votoček
- Člen | 2221
jen doplnim co uz napsal redhead… navic je to
$this->template->set['col']
osklive a fuj a vubec se me
nelibi. nevim sice co a proc to tak je ale na 99.9% je to spatne.
- trollnet
- Člen | 8
ahoj, chtel bych se zeptat na jednu vec:
z 1 formulare bych chtel ukladat do
2 tabulek. Nevim ale jak si za pomoci metody
$data = $form->getValues();
(nebo nejak jinak) coz mi da napr.
hodnoty
<?php
array(2) {
"predmet" => "chemie" (3)
"dochazka" => "ano"
"znamka" => "5"
}
?>
vytahnout jen tu hodnotu, kterou chci tak, abych pro vlozeni do databaze pouzil
<?php
public static function insert($data)
{
dibi::query('
INSERT INTO [tabulka]', $data
);
}
?>
Pozn. Nechci menit dotaz na
<?php
public static function insert($data)
{
dibi::query("INSERT INTO [tabulka] (sloupec1) VALUES ($hodnota1, $hodnota2)");
}
public static function insert2($data)
{
dibi::query("INSERT INTO [tabulka2] (sloupec1) VALUES ($hodnota3)");
}
?>
a do toho vkladat $data['hodnota++']
, aby dotaz zustal
universalni
- trollnet
- Člen | 8
diky za rychlou odpoved… no drzel bych se toho kontejneru, ale s nette zacinam a po pravde nevim, jak na to. Muj formular bez validace vypada nejak takhle
<?php
public function createComponentPridatForm()
{
$form = new AppForm();
$form->addText('predmet', 'Predmet'); // do prvni tabulky
$form->addText('znamka', 'Znamka', 2); // do druhe tabulky
$form->addSubmit('Submit', 'Pridat');
$form->onSubmit[] = callback($this, 'pridatFormSubmitted');
return $form;
}
public function pridatFormSubmitted(AppForm $form)
{
$data = $form->getValues();
PridatModel::insert($data);
$this->flashMessage('Predmet ulozen!');
$this->redirect('default');
}
?>
Muzete mi prosim ukazat jak upravit formular a pak se nasledne odkazovat na data? Moc dik
Editoval trollnet (26. 11. 2010 22:52)