Selectbox → Defaultvalue z databáze

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Shoxy
Člen | 37
+
0
-

Dobrý večer,
Mám Formulář:

       $form = new Form;
        $form->setMethod('POST');
        $form->getElementPrototype()->class = 'modernForm contact2-form addDodavateleForm';
        $form->addText('DodavateleNazev','Název')
             ->setHtmlAttribute('class','input2;')
             ->setRequired('Zadejte název !');
        $form->addSelect('DodavatelStat', '', [
  'AF' => 'Afghanistan',
  'AX' => 'Aland Islands',
  'AL' => 'Albania',
  'DZ' => 'Algeria',

      .....
       ...
        .

        ]);
        $form['DodavatelStat']->setDefaultValue('CZ');
        $form->addText('DodavateleCislo','Číslo ')
             ->setHtmlAttribute('class','input2;')
             ->setRequired('Zadejte číslo !');
        $form->addText('DodavatelMesto','Město')
             ->setHtmlAttribute('class','input2;')
             ->setRequired('Zadejte Město !');
        $form->addText('DodavateleAdresa','Adresa')
              ->setHtmlAttribute('class','input2;')
             ->setRequired('Zadejte Adresu !');
        $form->addText('DodavatelePSC','Poštovní směrovací číslo')
              ->addRule(Form::INTEGER,'PSČ musí být číslo!')
              ->setHtmlAttribute('class','input2;')
              ->setRequired('Zadejte Poštovní směrovací číslo !');
        $form->addText('DodavatelePoradi','Pořadí')
             ->addRule(Form::INTEGER,'Pořadí musí být číslo!')
             ->setHtmlAttribute('class','input2;')
             ->setRequired('Zadejte Pořadí nakaládaní !');
        $form->addText('DodavatelePozice','Pozice')
              ->setHtmlAttribute('class','input2;')
              ->setRequired('Zadejte Pozici !');
        $form->addText('DodavateleHmotnost','Pozice')
              ->setHtmlAttribute('class','input2;')
              ->setHtmlType('number');
        $form->addText('DodavateleMax','Maximální počet palet')
              ->setHtmlAttribute('class','input2;')
              ->setRequired('Zadejte Maximální počet palet !');
        $form->addText('DodavateleInfo','Informace');
        $form->addSubmit('Ulozit','Přidat změny pro routu');
        $form->addProtection(); // Ochrana proti Cross-Site Request Forgery
        $form->onSuccess[]=[$this,'addFormSucceeded'];
        return $form;

a
Latte

{block content}
{form addForm}
					<span class="contact2-form-title">
						Přidání nového dodavatele
					</span>
					<div class="wrap-input2">
						<input n:name="DodavateleNazev" class="input2" type="text" >
						<span class="focus-input2" data-placeholder="NÁZEV DODAVATELE"></span>
					</div>

					<div class="wrap-input2">
						<input n:name="DodavateleCislo" class="input2" type="text" >
						<span class="focus-input2" data-placeholder="ČÍSLO"></span>
					</div>
					<div class="wrap-input2">
					<select n:name="DodavatelStat"></select>
					<span class="focus-input2" data-placeholder="STÁT" style="top:-14px"></span>
					</div>
					<div class="wrap-input2">
						<input n:name="DodavatelMesto" class="input2" type="text" >
						<span class="focus-input2" data-placeholder="MĚSTO"></span>
					</div>
					<div class="wrap-input2">
						<input n:name="DodavateleAdresa" class="input2" type="text" >
						<span class="focus-input2" data-placeholder="ADRESA"></span>
					</div>
					<div class="wrap-input2">
						<input n:name="DodavatelePSC" class="input2" type="text" >
						<span class="focus-input2" data-placeholder="PSČ"></span>
					</div>
					<div class="wrap-input2">
						<input n:name="DodavatelePoradi" class="input2" type="text" >
						<span class="focus-input2" data-placeholder="POŘADÍ"></span>
					</div>
					<div class="wrap-input2">
						<input n:name="DodavatelePozice" class="input2" type="text" >
						<span class="focus-input2" data-placeholder="POZICE"></span>
					</div>
					<div class="wrap-input2">
						<input n:name="DodavateleHmotnost" class="input2" type="text" >
						<span class="focus-input2" data-placeholder="HMOTNOST"></span>
					</div>
					<div class="wrap-input2">
						<input n:name="DodavateleMax" class="input2" type="text" >
						<span class="focus-input2" data-placeholder="MAX PALET"></span>
					</div>
				    <div class="wrap-input2">
						<textarea class="input2" n:name="DodavateleInfo"></textarea>
						<span class="focus-input2" data-placeholder="INFORMACE"></span>
					</div>

					<div class="container-contact2-form-btn">
						<div class="wrap-contact2-form-btn">
							<div class="contact2-form-bgbtn"></div>
							<button n:name="Ulozit" class="contact2-form-btn">
								Přidat dodavatele
							</button>
						</div>
					</div>
{/form}
<script src="{$basePath}/js/modernForm.js"></script>
{/block}

Pro editaci dat v databázi a potřeboval bych na základě vytáhlých dat z DB přiřadit default hodnotu pro SELECT.
Respektive, když z databáze vytáhnu hodnotu ‚CZ‘ aby select měl default hodnotu Czech Republic, když ‚SK‘ Slovakia apod..
Nevíte někdo jak na to? Vím, že v Prezenteru posílám data do šablony, ale nevím jak k nim přistupovat z formulářové komponenty. Jelikož kdybych k nim měl přístup tak si vlastně vezmu tu hodnotu a použiji: $form['DodavatelStat']->setDefaultValue($myVar->DodavatelStat); ,ale je to pouze nápad.
Děkuji za pomoc.

Shoxy
Člen | 37
+
0
-

Tak jsem to nakonec vyřešil. Stačilo upravit Render metodu:

  $var = $this->dodavatel->get($id);
  $this->template->dodavatel = $var;
  $this['editForm']->setDefaults($var->toArray());

a v latte poté stačilo pouze smazat veškeré value={"$data->..."}