FORMULÁŘ setAttribute z action<akce>, Strankovani – paginator

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

Snažím se volat metody typu setRequired, addRule, addCondition, setAttribute z akce místo z metody vytvářející formulář.
vyzkoušel jsem

<?php
	// nefunkční
	$this["productForm"]["time"]->setAttribute('min', '18:00');
?>

time je definován jako

<?php
		$form->addText('time', "Čas vyzvednutí")
				->setType('time')
				// fungovalo by, ale nevim kolik by mělo byt xx, protože nemám přístup k datům
				->setAttribute('min', 'xx')
				// 15 min = 15 * 60 s - chci změnit na čas maximální délky přípravy produktu
				->setDefaultValue(date("G:i", time() + 15 * 60))
				->addRule(Form::FILLED, "Vlož čas vyzvednutí");
?>

A pak bych ještě rád použil Nette stránkovač, ale ta dokumentace mi není jasná. Především mě mate, jak je možné mít referenci na $paginator v modelu, když je jeho deklarace použitá v akci presenteru. A jestli jsem vůbec pochopil správně, že ta deklarace $paginatoru by byla v nějaké akci a přes parametr by obdržela číslo pro setPage(). Link na dokumentaci

Felix
Nette Core | 1247
+
+1
-

ad) Form

Ukaz mi cely ten kod jak vytvaris formular a jak to nastavujes v akci, protoze principialne by to takto fungovat melo.

ad) Paginator

Nesmis si plest Paginator – tridu pro manipulaci se strankovanim a VisualPaginator – komponentu, ktera obaluje objekt paginator a vykresluje ho a nastavuje aktualni stranku.

Pak totiz v presenteru muzes mit neco jako.

protected function createComponentVp() {
	return new VisualPaginator();
}

public function actionDefault() {
	$vp = $this['vp']; // vytvori komponentu
	$paginator = $vp->getPaginator(); // vrati objekt typu Paginator, tu metodu getPaginator si musis samozrejme napsat

	$this->myUltraModel->findAll($paginator); // vyfiltruje polozky podle nastaveni paginatoru
}

VisualPaginator muzes pouzit viz tento thread.

Editoval Felix (10. 4. 2015 12:22)

James07
Člen | 41
+
0
-

Tak jsem se ještě jednou podíval a to 1. je vyřešené. Problém byl snad už tradičně u pojmenování, vytvářel jsem komponentu orderForm a snažil jsem se to napasovat na productForm ->po sjednocení názvu to funguje.

2. dotaz směřoval na obecný Nette\Utils\Paginator, a předáním paginatoru jako parametr do modelu objasnilo vše. Původně jsem myslel, že paginator by měl být někde v bootstrap.php a ne v presenteru.

Děkuji.