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

uživatel-p
Č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 | 1073
+
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ě.

uživatel-p
Člen | 553
+
0
-

Jak to přesně myslíš?

Pavel Kravčík
Člen | 1073
+
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).

uživatel-p
Č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.

uživatel-p
Č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)

uživatel-p
Č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->getUnsafeValues(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.

uživatel-p
Č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 | 1073
+
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 | 7769
+
0
-

To jsou rady jak krava