Generovani json

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

Ahoj, s ajaxem zacinam (btw: s nette taky :D ) a nevim presne jak se ma spravne resit nasledujici…
chtel bych v nette pouzit nasledujici jquery plugin ale nevim jakym zpusobem generovat soubor data.js (json)

(jen teoreticky)

  • to mam pomoci napr. dibi::fetch() ziskat data z db,
  • ty pomoci json_encode() dostat do potrebneho tvaru (jako je soubor v examplu pluginu jquery – data.js),
  • (a ted nastava to co si myslim ze se dela jinak) a tento string ulozit do souboru data.js (za pomoci fopen(), fwrite(), fclose()) ?

moje reseni mi prijde velice neohrabane, musi existovat lepsi :)

diky

Editoval o5 (2. 2. 2009 13:11)

Jan Tvrdík
Nette guru | 2595
+
0
-

o5 napsal moje reseni mi prijde velice neohrabane, musi existovat lepsi :)

Podle mě je to zcela normální řešení a těžko na něm něco zlepšovat. Ale možná se pletu.

PetrP
Člen | 587
+
0
-

a co něco takového:

$router[] = new Route('cascade/data.js', array(
    'presenter' => 'Cascade',
    'action' => 'ajax',
));
// popřípadě cokoli dle libosti

class CascadePresenter extends Presenter
{
	public function renderAjax()
	{
		// např. dibi::fetch() získat data z db
		// ty pomoci json_encode() dostat do potřebného tvaru (jako je soubor v examplu pluginu jquery – data.js),
		// vypsat je např do šablony, $this->template->data = $data;
		// vyřešit si třeba cachování, jestli se data nemění tak často
		// popřípadě si s tím dělat cokoli potřebuješ (nezkoumal jsem tu jquery knihovnu)
	}
}

//edit
Ještě mě napadá že výchozí .htaccess (z examples) nepouští k nette soubory *.js to si musíš změnit popřípadě data.js přejmenovat na něco jiného, jestli na tom názvu nestojí ta knihovna.

Editoval PetrP (2. 2. 2009 14:21)