Selectbox → Defaultvalue z databáze

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->..."}