Zmena formulara pri uprave a problem s datumom

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

Zdravim,

Celkom jednoduche problemy (aspon sa tak javia).

1. Mam vytvorenu tovarnicku pre formulare tusim podla CD collection alebo nieco take (jedna tovarnicka pre edit aj add). Mam tam submit (delete), ktory maze editovany zaznam. Problem je v tom ze nechcem aby sa tento submit zobrazoval aj pri vkladani (obvious reason). Zatial to mam takto:

$this['orderForm']['delete']->disabled = true;

Ale iste mnohi tusite ze to nieje celkom dobra cesta.

2. V tabulke (MySQL – InnoDB) mam stlpec typu DATE. Ked jeho hodnotu cez metodu setDefaults dosadim do editovaneho formulara tak sa mi vo formulari objavi datum a cas (naviac v americkom formate).

Obisiel som to takto:

public function renderEdit($id = 0) {
    $form = $this['orderForm'];
    if (!$form->isSubmitted()) {
	$row = $this->orderModel->getOrders()->get($id);
	...
	$this['orderForm']['end_time']->setDefaultValue(date('d.m.Y', strtotime((string) $row->end_time)));
    }
}

a po odoslani:

public function orderFormSubmitted(UI\Form $form) {
	...
	    $form->setValues(array(
		'end_time' => date('Y-m-d', strtotime($form->values->end_time))
	    ));
	...
}

Existuje nejaka schodnejsia cesta? Pripadne nejaky best-practice?
Pozn.: Nechcem pouzivat datePicker pluginy

straiki
Člen | 1
+
0
-

Ahoj,
ad1:
ja osobne to delam taky s jednou tovarnickou a tlacitko pridavam az pri renderEdit (jine, ale to je jedno)

<?php
public function renderEdit($id)
{
...
      $form = $this['addForm'];
      $form->addSubmit('addCont', 'Uložit a pokračovat');
      $this['addForm']['add']->caption = "Uložit";
...
}
?>

Tim padem je tlacitko zobrazeno doopravdy jen tam, kde ma byt..

ad2:
aktualne me zadny rozmnejsi napad nenapada :-X

cuchi
Člen | 17
+
0
-

Nazdar,
Dakujem za odpoved. Skusil som Tvoje riesenie ale pri odoslani mi zacalo hadzat ze $form[‚delete‘] neexistuje. Naviedol si ma vsak na iny napad:

protected function createComponentOrderForm() {
...
	if ($this->getAction() == 'edit') {
	    $form->addSubmit('delete', 'Odstrániť')
		    ->setAttribute('onclick', 'return confirm(\'Naozaj odstrániť?\')')
		    ->setValidationScope(FALSE);
	}
...
}

public function orderFormSubmitted(UI\Form $form) {
...
	if (isset($form['delete']) && $form['delete']->isSubmittedBy()) {
	    ...
	}
...
}

Samozrejme este trebalo upravit latte form.

...
{if isset($form['delete'])}
	{input delete}
{/if}
...