ublaboo/datagrid: po update na PHP8 nefunguje filtrování

Polki
Člen | 553
+
0
-

Ahoj, tak myslím, že nadpis říká vše.

Před aktualizací vše fungovalo, ale jakmile se na serveru změnilo PHP7.4 na PHP8, spustil se composer update, tak od té doby nefunguje filtrování.

Když vyplním políčko filtru, tak se sice ajax request vykoná, ale vykoná se GET metodou, přičemž před aktualizací se vykonal POST metodou. Jiný rozdíl neregistruji.

Nápady?

Pavel Kravčík
Člen | 1180
+
0
-

Zkusil bych ručně aktualizovat assety (composer Ti je nezkopíruje). S PHP8 jsme přešli na naja a filtrování funguje bezvadně.

Polki
Člen | 553
+
0
-

Jak to přesně myslíš?

Pavel Kravčík
Člen | 1180
+
0
-

Pokud pustíš composer a nepoužíváš třeba webpack, tak je občas nutné tyhle soubory překopírovat.

A v PHP8 filtrování funguje. To byl druhý point (testováno s Naja).

Polki
Člen | 553
+
0
-

Pokud pustíš composer a nepoužíváš třeba webpack, tak je občas nutné tyhle soubory překopírovat.

Jo tak.. Jakože se změnily CSS nebo JS soubory a já je musím nahrát do www složky?
WebPack nepoužívám a ani nepoužívám běžně datagrid. Mám na to svoje komponenty, ale na tomto projektu konkrétním byl datagrid použit od bývalého programátora a proto to musím řešit.

Díky odzkouším.

Polki
Člen | 553
+
0
-

Hmm tak chyba musí být ještě někde jinde…

Zkoušel jsem to znovu a request se už najednou dělá POSTem aniž bych cokoliv změnil, obsah postu je takový:

array(
    'filter' => array(
        'id' => '473',
        'title' => '',
        'publish' => '',
    ),
    'perPage' => '10',
    '_do' => 'articleGrid-filter-submit',
    'perPage_submit' => 'Change',
)

Což je správně, ale v response serveru není jen ten 1 řádek s ID odpovídající tomu 1 filtru, ale jsou tam všechny řádky, jakoby se filtr vůbec neaplikoval…

Tedy není problém v assetech, ale nejspíš někde v core DataGridu.

Editoval Polki (10. 9. 2021 16:20)

Polki
Člen | 553
+
0
-

Tak změna. Nefunguje to s Nette Forms 3.1.

Procházel jsem kód a narazil jsem, že se data získávají pomocí funkce getValues, což vrací prázdný ArrayHash.

Pomohlo změnit tento řádek na toto:

$values = (array) $form->getUntrustedValues(ArrayHash::class);

Otázka zní: Je to chyba, nebo jsem udělal někde něco špatně já?

Editoval Polki (29. 9. 2021 0:36)

Michal Kumžák
Člen | 106
+
0
-

Na to ti mohu poradit toto https://blog.nette.org/…te-forms-3-1. Možností je, že je vypnutá validace, ale pak právě nefunguje getValues.

Polki
Člen | 553
+
0
-

@MichalKumžák To jsem samozřejmě četl. Otázka je, co s tím mám dělat, když není problém v mém kódu, ale v kódu rozšíření ublaboo/datagrid

Pavel Kravčík
Člen | 1180
+
0
-

@Polki: Zkus poslat něco na kafe vývojářům, třeba na to mrknou. https://github.com/…te/datagrid/

Editoval Pavel Kravčík (30. 9. 2021 7:40)

Michal Kumžák
Člen | 106
+
0
-

Polki napsal(a):

@MichalKumžák To jsem samozřejmě četl. Otázka je, co s tím mám dělat, když není problém v mém kódu, ale v kódu rozšíření ublaboo/datagrid

Pokud je chyba opravdu v datagridu, tak napiš opravný patch a pošli autorům :-P

David Grudl
Nette Core | 8110
+
+1
-

To jsou rady jak krava

KristianSubweb
Člen | 144
+
0
-

Pavel Kravčík napsal(a):

Pokud pustíš composer a nepoužíváš třeba webpack, tak je občas nutné tyhle soubory překopírovat.

A v PHP8 filtrování funguje. To byl druhý point (testováno s Naja).

Ahoj riešim akurát datagrid na php 8.0.

Pre colum text pridám možnosť filtrovať nad týmto stĺpcom. Akonáhle začnem niečo do filtra písať tak síce to daný string respektíve riadok vyhladá len hned ako dopíšem to filtrované slova tak sa automaticky aj vymaže s toho input filtra. Pls neviete čo by s tým mohlo byť nestretol sa stým niekto ? Za odpovede vopred ďakujem.