Vykreslení hodnoty checkobxu v šabloně

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

Zdravím, mám dotaz zda je možné vykreslit hodnotu value v šabloně u formulářového prvku checkbox, viz níže ? U addText se mi v šabloně hodnota vykreslí v pořádku, ale u addCheckbox nikoliv. Případně existuje možnost jak níže uvedenou problematiku lépe vyřešit. Děkuji

Presenter

public function renderZobrazit($id){
		$this->template->projektFoto = $this->ProjektyRepository->fetchFoto($id);
	}

	public function createComponentPopisFoto(){

		$form = new Form();
        $form->addText('nazev_cz', 'Název (cz)');
        $form->addText('nazev_en', 'Název (en)');
        $form->addCheckbox('odstranit', 'Odstranit');
        $form->addSubmit('save', 'Uložit');
        $form->onSuccess[] = callback($this, 'ZpracovatFormular');
    	return $form;
	}

Šablona

block content}
{form popisFoto}
{foreach $projektFoto as $foto}
<div class="celekFoto">
<div class="vlevoFoto">
<img src="{$basePath}/images/projekty/miniatury/{$foto['projekty_id']}/{$foto['foto']}">
</div>
<div class="vpravoFoto">
{label nazev_cz /}<br>
{input nazev_cz, value => $foto['nazev_cz']}<br>
{label nazev_en /}<br>
{input nazev_en, value => $foto['nazev_en']}<br>
<br>{input odstranit, value => $foto['id']}

</div></div>
{/foreach}
{input save}
{/form}
<br>
{/block}
Azathoth
Člen | 495
+
0
-

Tohle bys měl udělat v továrničce, po addCheckBox zavlej setDefaultValue.

Taps
Člen | 169
+
0
-

@Azathoth
To jo, ale jak to pořešit v tom foreach ?

David Matějka
Moderator | 6445
+
0
-

vytvor si dynamicky containery pro kazdou fotku, viz https://doc.nette.org/cs/forms#… do tech containeru pak pridas nazev_cz atd..

tohle ti nemuze fungovat, jelikoz vykreslujes jeden input xkrat, v php by ale pak prisla pouze jedna hodnota pod tim nazvem nazev_cz

Azathoth
Člen | 495
+
0
-

{input odstranit, value ⇒ $foto[‚id‘]}
Chápu to správně, že se do checkboxu snažíš narvat id? Jak to má podle tebe fungovat?

Taps
Člen | 169
+
0
-

@Azathoth
Snažím se id nastavit jako hodnotu value u checkobxu

Azathoth
Člen | 495
+
0
-

@Taps a jak by to podke tebe mělo fungovat? chechbox je zaškrtávaví, tedy boolean.Hodnota value je buď prázdná(nezaškrtnuto) a nebo ‚checked‘(zaškrtnuto). Pokud se nepletu, tak do checkboxu nic jiného nacpat nejde a ani nemá dmysl tam nic jiného cpát. Trochu se rozepiš o tom, proč chceš dávat do checkboxu něco jiného než boolean.

Taps
Člen | 169
+
0
-

@Azathoth:

  1. nastavím value do checkboxu
  2. pokud je checbox zaškrknutý tak value hodnotu odešlu přes formulář a následně zpracuji přes PHP
Azathoth
Člen | 495
+
0
-

@Taps tak to udělej jinak. Vytvoř si tam hidden input, do kterého dáš to id a v php to zpracuješ tak, že pokud bude checkbox zaškrtnutý, pak si id fotky vytáhneš z toho hidden inputu.

Editoval Azathoth (26. 10. 2014 10:25)

Taps
Člen | 169
+
0
-

@matej21
Děkuji
upravil jsem to takto:

	public function createComponentPopisFoto($name){

		    $form = new Form($this,$name);
$containerNazevCz =  $form->addContainer('nazev_cz');
$containerNazevEn =  $form->addContainer('nazev_en');
$containerOdstranitFoto =  $form->addContainer('odstranit');

  foreach($this->fotky as $fotky){
    $containerNazevCz->addText($fotky->id)->setDefaultValue($fotky->nazev_cz);
    $containerNazevEn->addText($fotky->id)->setDefaultValue($fotky->nazev_en);
    $containerOdstranitFoto->addCheckbox($fotky->id)->setDefaultValue($fotky->id);
  }

$form->addSubmit('save', 'Uložit');
$form->onSuccess[] = callback($this, 'ZpracovatFormular');
	return $form;
	}

Můžeš mi prosím ještě poradit jak mohu container vykreslit v šabloně . Děkuji

Editoval Taps (26. 10. 2014 14:36)