Nedostupne perzistentne parametre
- tomas.stofik
- Člen | 33
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‘);
…
- Skusal som vypis $section v renderUsers($section, $id)
- takisto som skusal vypis cez $this->request->getQuery(‚section‘)
- 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
- tomas.stofik
- Člen | 33
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 | 33
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 | 6445
chapu spravne, ze jsi na url
http://localhost/ThreeSoulsCMS/web/cms/
a ono to matchne routu
admin/users/[<section>/][<id>/]
?
- tomas.stofik
- Člen | 33
David Matějka napsal(a):
chapu spravne, ze jsi na url
http://localhost/ThreeSoulsCMS/web/cms/
a ono to matchne routuadmin/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 | 33
David Matějka napsal(a):
chapu spravne, ze jsi na url
http://localhost/ThreeSoulsCMS/web/cms/
a ono to matchne routuadmin/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 | 6445
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 | 33
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 | 6445
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?