Prosím o otestování Nette Routing 3.1 RC
- David Grudl
- Nette Core | 8253
Než vyjde Nette Routing v3.1, poprosil bych vás o otestování RC verze. Je tam oprava určitého chování a rád bych se ujistil, že je zcela zpětně kompatibilní. Díky!
Stačí dát do composeru
- dakur
- Člen | 493
Presenter#requestToUrl()
– resp.
$this->router->constructUrl()
v ní – vrátí jiný
výsledek než by mělo. Má být: /xyz/abc/working-draft
, vrátí
/xyz/abc/
. Routa je /xyz/abc/<version>
,
version
je value object.
nette/application: dev-master#6a861fab7bb50dad84211fa6124dbe3d37b14f57
Doteď jsem teda navíc nette/routing
neměl ani v
composer.json
, spoléhalo to na závislost jiného balíčku, tak
nevím, jestli tam nemůže být taky problém.
Editoval dakur (25. 2. 2021 17:44)
- dakur
- Člen | 493
Zredukoval jsem to na toto a zjistil jsem, že když oddělám parametr
campaignId
, tak to funguje, takže bude problém spíš s tím VO
CampaignId
. V Routing\Route#preprocessParams()
zůstane campaignId
v $params
a potom v
compileUrl()
to skočí do větve
isset($this->metadata[$name][self::FIXITY])
a
$required === null && !$brackets
se vyhodnotí jako
false
($required === null
,
$brackets === []
). Nevylučuji ani chybu u nás.
Editoval dakur (25. 2. 2021 20:24)
- dakur
- Člen | 493
Zapomněl jsem ještě zmínit, že problém nastane při kanonizaci URL v
Presenter
třídě. Tedy při ověřování
/campaign/{uuid}/working-draft
to chce přesměrovat na
/campaign/{uuid}
. (A proto, že máme redirect v opačném
směru, tak jsem na začátku psal, že se to zacyklilo.)
Povedlo se mi to rozbít v nette/sandboxu, zde je commit ve forku s mým use-casem: https://github.com/…f8ab5d3ee6be
Nakonec to vypadá, že problém není ani v campaignId
, ani ve
version
, ale v jejich kombinaci. 🤷♂️
Editoval dakur (26. 2. 2021 8:43)
- David Grudl
- Nette Core | 8253
@dakur sorry že se k tématu vracím až s ročním odstupem. Verzi 3.1 jsem tehdy kvůli zmíněným problémům nevydal, teď jsem se k tomu konečně dostal a zkouším tvůj sandbox. Mám ale pocit, že ten problém co zmiňuješ, se děje i v původní verzi 3.0.2. Dělám něco špatně? Nebo už je to tak dávno, že všechno je jinak? :-)
- dakur
- Člen | 493
@DavidGrudl Díky za zprávu. Nic jsem s tím od té doby nedělal, na 3.0.2 mi to celou dobu běží.
Když jsem to tenkrát zkoušel, musel jsem asi updatnout
nette/application
, protože jak píšu výše,
nette/routing
ani přímo v composer.json
nemám. Tak
nevím, jestli nemůže být problém i v tom nějak.. Pokud ti to dělá
v tom sandboxu na 3.0.2, tak se na to budu muset ještě podívat.
- dakur
- Člen | 493
@DavidGrudl Ta chyba tam je, ale byla chyba i v tom mém repu, měl jsem tam jenom jedno view pro dvě routy, takže to vždy kanonikalizovalo na tu první. Opravil jsem to.
Nicméně ten problém, který jsem původně hlásil, je s nejvyšší pravděpodobností způsobený tímto commitem. Nekrokoval jsem to, ale po revertu daného commitu se to rozjede, jak má. Zkoušel jsem to i upravit ve vendor složce v appce a taky to začalo šlapat (aspoň teda na tom místě, kde se to předtím cyklilo).