CD-colletion – nefunkční odeslání vykresleného formuláře

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

Ahoj Všem,
potřeboval bych postrčit asi s úplnou maličkostí.
Vzal jsem si ukázkovou aplikaci CD-collection a rozchodil na NETTE 2.0 MYSQL. – vše bez „větších“ problémů.

Nyní jsem si chtěl pouze vyzkoušet vykrelit formulář manuálně, jak je na tomto webu popsáno:
a místo:

{block #content}

<h1 n:block="title">Edit Album</h1>

{control albumForm}

jsem napsal:

{block #content}

<h1 n:block="title">Edit Album</h1>

{form albumForm}

<table>
<tr>
    <td bgcolor="#0099CC">{label artist /}</td>
    <td bgcolor="#339999">{label title /}</td>
  </tr>
  <tr>
    <td>{input artist}</td>
    <td>{input title}</td>
  </tr>
</table>{input save}{input cancel}

{/form}

a po tomto zásahu se nic nestane, nedojde k uložení.

v presenteru je toto:

	protected function createComponentAlbumForm()
	{
		$form = new Form;
		$form->addText('artist', 'Artist:')
			->setRequired('Please enter an artist.');

		$form->addText('title', 'Title:')
			->setRequired('Please enter a title.');

		$form->addSubmit('save', 'Save')->setAttribute('class', 'default');
		$form->addSubmit('cancel', 'Cancel');
		$form->onSuccess = callback($this, 'albumFormSubmitted');

		$form->addProtection('Please submit this form again (security token has expired).');
		return $form;
	}



	public function albumFormSubmitted(Form $form)
	{
		if ($form['save']->isSubmittedBy()) {
			$id = (int) $this->getParam('id');
			if ($id > 0) {
				$this->albums->where('id',$id)->update($form->values);
				$this->flashMessage('The album has been updated.');
			} else {
				$this->albums->insert($form->values);
				$this->flashMessage('The album has been added.');
			}
		}

		$this->redirect('default');
	}

díky za jakoukoliv radu.

Aurielle
Člen | 1281
+
0
-

Musíš přidat ještě {input _token_} nebo vypnout CSRF protekci.

kravčo
Člen | 721
+
0
-

Oprava chyby sa už nachádza v jednom pull requeste

biolit
Člen | 11
+
0
-

Díky za rady, jdu to zkusit opravit.

biolit
Člen | 11
+
0
-

Tak jsem nejprive přidal {input _token_}

{block #content}

<h1 n:block="title">Edit Album</h1>

{form albumForm}
{input _token_}
<table>
<tr>
    <td bgcolor="#0099CC">{label artist /}</td>
    <td bgcolor="#339999">{label title /}</td>
  </tr>
  <tr>
    <td>{input artist}</td>
    <td>{input title}</td>
  </tr>
</table>{label save /}{input save}{label cancel /}{input cancel}

{/form}

ale to nepomohlo. Zkusil jsem tedy upravit chybu v makru dle zaslaneho postu, stále stejný – tedy žádný výsledek.

kravčo
Člen | 721
+
0
-
// skús
$form->onSuccess = callback(...);
// nahradiť za správne
$form->onSuccess[] = callback(...);
biolit
Člen | 11
+
0
-

Díky už to funguje, můžu se prokousávat dál.