Nedostupne perzistentne parametre

tomas.stofik
Člen | 28
+
0
-

Zdravim vsetkych,

Stretol sa niekto vo verzii Nette 3.0 (XAMPP Apache + PHP 7.3.x) s nedostupnostou parametrov z routy?

Priklad route:
$router[] = $adminRouter = new RouteList(‚Admin‘);
$adminRouter->addRoute(‚admin/users/[<section>/][<id>/]‘, ‚Homepage:users‘);
$adminRouter->addRoute(‚admin/settings/‘, ‚Homepage:settings‘);

  1. Skusal som vypis $section v renderUsers($section, $id)
  2. takisto som skusal vypis cez $this->request->getQuery(‚section‘)
  3. a ako posledne $this->getParameter(‚section‘)

var_dump vypise null aj ked premenna v url (route matchne tiez) existuje. Jedine co viem je ze na ostrom hostingu (Websupport) to chvilu fungovalo.

Neviem ci to nieco meni na veci no definicia vacsiny premennych je v samostatnom module „GlobalModule“ od ktoreho dedia zvysne styri moduly (AdminModule, CmsModule, SalesModule, FrontModule)

Vopred dakujem za pomoc

David Matějka
Moderator | 6354
+
0
-

jak vypada matchnuta routa v debug panelu?

tomas.stofik
Člen | 28
+
0
-

David Matějka napsal(a):

jak vypada matchnuta routa v debug panelu?

https://ibb.co/Gv61v86

David Matějka
Moderator | 6354
+
0
-

a jak vypada url, ktera se matchuje?

tomas.stofik
Člen | 28
+
0
-

David Matějka napsal(a):

a jak vypada url, ktera se matchuje?

http://localhost/…CMS/web/cms/

tomas.stofik
Člen | 28
+
0
-

David Matějka napsal(a):

a jak vypada url, ktera se matchuje?

Takisto Nette\Http\Request nevrati jednotlive parametre a jedine kde sa premenna nachadza je uri v tvare „/cms/sekcia/id/“

tomas.stofik
Člen | 28
+
0
-

David Matějka napsal(a):

a jak vypada url, ktera se matchuje?

Este pridam ze som najprv myslel ze chyba mod_rewrite no Requirmenst Checker nevypisal nic. Dik moc.

David Matějka
Moderator | 6354
+
0
-

chapu spravne, ze jsi na url http://localhost/ThreeSoulsCMS/web/cms/ a ono to matchne routu admin/users/[<section>/][<id>/]?

tomas.stofik
Člen | 28
+
0
-

David Matějka napsal(a):

chapu spravne, ze jsi na url http://localhost/ThreeSoulsCMS/web/cms/ a ono to matchne routu admin/users/[<section>/][<id>/]?

ano presne. no nikde nemozem ziskat parameter ako samotny.

request definujem v Bootstrape a vkladam do konfigu kde si to vytiahnem v kazdom Module. No nemam ani len tusenie preco nikde nieje dostupna. Dik este raz.

tomas.stofik
Člen | 28
+
0
-

David Matějka napsal(a):

chapu spravne, ze jsi na url http://localhost/ThreeSoulsCMS/web/cms/ a ono to matchne routu admin/users/[<section>/][<id>/]?

Zdravim

Podarilo sami to rozchodit no kazdopadne je magia v dedeni od presenterov v inych moduloch (namespaces)
t.j. ak:
class HomepagePresenter extends Nette\Application\UI\Presenter
vsetko funguje ako ma
no akonahle je HomepagePresenter extends \GlobalModule\BasePresenter tak to nefunguje.

Nejake napady ako to vyriesit? Dik moc

David Matějka
Moderator | 6354
+
0
-

co obsahuje ten tvuj BasePresenter?

a prijde mi divne, ze ta url matchne tu routu – vzdyt v te url neni vubec ta fixed cast admin/users.

tomas.stofik
Člen | 28
+
0
-

David Matějka napsal(a):

co obsahuje ten tvuj BasePresenter?

a prijde mi divne, ze ta url matchne tu routu – vzdyt v te url neni vubec ta fixed cast admin/users.

Prikladam strukturu:
AdminModule – samostatna aplikacia na adrese /admin/
CmsModule – samostatna aplikacia na adrese /cms
FrontModule – webstranka /
GlobalModule – Globalne presentery od ktorych dedia vyssie uvedene:
Struktura Global Presenters:

namespace GlobalModule;
class BasePresenter extends Nette\Application\UI\Presenter ->
beforeRender, vlastne filtre, …
class GlobalPresenter extends BasePresenter ->
Definicia premennych, nacitanie konfiguracie,
class MethodsPresenter extends GlobalPresenter ->
databazove metody pre celu aplikaciu
class MainPresenter extends MethodsPresenter ->
Prihlasovanie, autentifikacia, etc.

nasledne vsetky moduly ako je Admin, Cms, Front,… dedia od \GlobalModule\MainPresenter v com bude asi niekde problem napr:

ak:
namespace FrontModule
class BasePresenter extends \GlobalModule\MainPresenter

k premennym z url sa nedostanem

no v klasickom pripade:
namespace FrontModule
class BasePresenter extends Nette\Application\UI\Presenter

aplikacia sa sprava ako ma, cize tym padom by som router asi vylucil.

niesom profi v Nette aj ked s nim robim dlhsie no mne to pride ako keby nieco „blokovalo/prepisovalo“ obsah request alebo context.

Velmi pekne dakujem este raz za pomoc.

Editoval tomas.stofik (11. 2. 2020 12:44)

David Matějka
Moderator | 6354
+
0
-

uff, to je hodne komplikovana struktura base presenteru, vetsinou by ti mely stacit maximalne dve urovne base presenteru.

jako muzes zkusit zakomentovat cast kodu v jednotlivych vrstvach a postupne tak najit problem.

ale znovu opakuji – je divne uz to routovani. mas tam routu admin/users/[<section>/][<id>/], ktera se ti, jak rikas, matchnula pro url http://localhost/ThreeSoulsCMS/web/cms/. to, ze tam nemas section a id je jasne, ale neni mi jasne, proc se vubec matchnula. nezapominas zminit neco duleziteho?