Vytiahnut data z DB do form (select)
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- nettak2
- Člen | 19
Ahojte, mam jeden problem…
potrebujem do formulara vytiahnut data z DB a nasledne pomocou selectu vybrat danu polozku a ulozit ju do druhej tabulky
neviem v com robim chybu, ale nevie mi vytiahnut z DB tie karty
DAKUJEM ZA VSETKY RADY :)
vernostna_karta:
id
cislo_karty
typ_karty
zakaznik:
id
…
id_karta
signupformfactory.php
public function create(callable $onSuccess)
{
$form = $this->factory->create();
$form->addText('meno', 'Meno:');
$form->addText('priezvisko', 'Priezvisko:');
$form->addText('email', 'Váš e-mail:')
->setRequired('Prosím vložte Váš e-mail.')
->addRule($form::EMAIL);
$form->addText('adresa', 'Adresa:')
->setRequired("Adresa je povinný údaj");
$form->addText('telefon', 'Telefon:')
->addCondition(Form::FILLED)
->addRule(Form::PATTERN, 'prosím zadejte korektní telefon', '^[+(]{0,2}[0-9 ().-]{9,}');
$cards = $this->userManager->getAllCards();
$form->addRadioList('typ_karty', 'Typ karty:',$cards);
$form->addSubmit('send', 'Zaregistrovať');
$form->onSuccess[] = function (Form $form, $values) use ($onSuccess) {
$this->userManager->add($values->meno,$values->priezvisko, $values->email,$values->adresa,$values->telefon,$values->karta);
$onSuccess();
};
return $form;
}
usermanager.php
public function getAllCards() {
$this->database->table(self::TABLE_VK)->fetchAll();
}
/**
* Add customer for admin.
* @param $meno
* @param $priezvisko
* @param $email
* @param $adresa
* @param $tel
* @param $karta
* @return Nette\Security\Identity
*/
public function add($meno, $priezvisko, $email, $adresa, $tel, $karta)
{
$card = $this->database->table(self::TABLE_VK)->get($karta);
bdump($card);
$this->database->table(self::TABLE_NAME)->insert([
self::COLUMN_MENO => $meno,
self::COLUMN_PRIEZVISKO => $priezvisko,
self::COLUMN_ADRESA => $adresa,
self::COLUMN_TELEFON => $tel,
self::COLUMN_EMAIL => $email,
self::COLUMN_KARTA => $card
]);
//$this->database->table(self::TABLE_VK)->where(':zakaznik.id_karta', $karta)->update($karta);
}
<div class="form-group">
<label n:name="typ_karty" class="col-sm-4 control-label">Typ karty:</label>
{* if (is_array($cards) || is_object($cards)) *}
{foreach $form[typ_karty]->items as $card => $label}
<div class="col-sm-1">
<label n:name="typ_karty:$card">
<div class="col-sm-4">
<input type="radio" n:name="typ_karty:$card"> {$label}
</div>
</label>
</div>
{/foreach}
</div>
- David Matějka
- Moderator | 6445
fetchAll vraci pole jednotlivych radku. musis z toho udelat pole o strukture
[
id => label
]
bud muzes vyuzit metodu fetchPairs na Selection nebo to rucne proiterovat a to pole sestavit