DataGrid 0.8, nette 0.8 – nefunkční filtr a stránkování

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

Předem se omlouvám, že Vás zatěžuji zastaralou verzí této komponenty a nette, ale v práci za mnou přišli s tím, že jim v jedné jejich webové aplikaci nefunguje stránkování u seznamu faktur, objednávek atp. Systém pro zobrazování a filtrování dat používá právě datagrid 0.8 a celý systém je vybudován na stařičkém nette 0.8. Aplikace byla naprogramována před x lety a neprogramoval jsem jí já, mě se tato aplikace dostala do rukou s tím, že nefunguje stránkování a filtrování a že je třeba to opravit.

Instinktivně si celý projekt rozjedu u sebe na localhostu kvůli debugování a zkoumání, proč to nejde, a jko na potvoru na localhostu je vše OK, stránkování i filtrování funguje, ale na ostrém hostingu bohužel nejede. Snažil jsem se vyzkoumat, čím to může býti, ale moc jsme nezmoudřel. Jediné, co jsem zjistil, že to provede redirect 303 zpět na původní stránku a datagrid nestránkuje, nefiltruje, prostě se zobrazí jen jeho první stránka.

Aplikace jede na wedosu, PHP 5.3 (U mě na localhostu je PHP 5.4.).

Nemá někdo s tímto zkušenost, nesetkal se někdo s tímto nemilým problémem? Vím, že nette 0.8 už je asi dávno zapomenuto, ale jelikož je to několik let stará aplikace, která začala takhle blbnout až po přesunu z VPS na klasický hosting, mi nezbylo nic jiného, než tu otevřít téma, jelikož si nějak nevím rady, co s tím a proč to tak dělá.

Jak je napojen datagrid:

$grid = new DataGrid;
                $grid->setTranslator(new Translator(Environment::expand('%templatesDir%/grid.cs.mo')));
                $grid->bindDataTable(dibi::dataSource('select * from s_questions order by questions_id desc'));

                // columns
                $grid->addColumn('questions_subject', 'Předmět');
                $grid->addColumn('questions_question', 'Otázka');
                $grid->addColumn('questions_answer', 'Odpověď');
                //css
                //$grid['users_regdate']->getCellPrototype()->style('text-align: right');

                // filters
                $grid['questions_subject']->addFilter();
                $grid['questions_question']->addFilter();
                $grid['questions_answer']->addFilter();

                // actions
                $grid->keyName = 'questions_id';
                $grid->addActionColumn('Akce')->getHeaderPrototype()->style('width: 100px;');

                //$grid->addAction('Upravit vzor', ':Uzivatel:Poradna:dotaz', Html::el('span')->setText("Odpovědět"));


                $grid->setItemsPerPage(10);

                $this->addComponent($grid, $name);
llook
Člen | 407
+
0
-

303 se používá na PRG a taky na redirect po signálu. Když v datagridu klikneš na změnu stránky, tak se zavolá handlePage, to nastaví persistentní parametr a zavolá $this->redirect('this').

Takže je otázka, proč to přesměrovává pořád na stejnou stránku. Není možné, že se ti ztrácí anotace @persistent? Na Wedosu je pro 5.3 defaultně zapnutý eAccelerator, zkus ho vypnout.

Taky zkus přejít na produkci přímo na to URL, které ti na localhostu funguje, abys viděl, jestli je fakt chyba v tom přesměrování, nebo jinde.

JDC
Člen | 19
+
0
-

Nakonec jsem to vyřešil tak, že jsem přepnul na php 5.4. a je klid. Zdá se, že už nikde nic rozbitého není, tak snad už to šlape v pohodě a snad už si klienti nebudou stěžovat, že jim někde něco nefunguje. Zatím to běží déle jak týden a drží se to.