Lze modifikovat Path promennou tridy Uri?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Dj_Oggy
Člen | 67
+
0
-

Zdravim,

lze nejak modifikovat path promennou v Uri tride? Potrebuju pri requestu modifikovat path objektu Uri, ale dostanu chybu, ze objekt je zmrazen a ja s nim nehnu.

Je tedy nejaka moznost, jak odmrazit Uri objekt a zmenit mu path promennou?

Diky za info.

jtousek
Člen | 951
+
0
-

Nešlo by použít něco jako forward nebo redirect? Ten objekt není zmrazenej jen tak bezdůvodně.

Dj_Oggy
Člen | 67
+
0
-

Teoreticky by mozna sel ten forward nebo redirect, ale musel bych si nejak prenest jiz zpracovane nastaveni do toho dalsiho pozadavku. Tudiz, jake se tu nabizi moznosti a pripadne speciality Nette?

Sessions? Persistentni parametry? (nikdy sem je nepouzil), nebo jsou i dalsi?

arron
Člen | 464
+
0
-

Mozna zkus zapsat o co presne Ti jde. Abysme pak nevymysleli kanon na komary ;-)

David Grudl
Nette Core | 8228
+
0
-

Netuším přesně, k čemu to potřebuješ, ale forward nevytváří další požadavek, jen zavolá další presenter.

Dj_Oggy
Člen | 67
+
0
-

Dobre,

delam dynamicke matchovani url vuci databazi. Mam url ve tvaru /<lang>/<libovolne_dlouha_url>/<dalsi_pokracovani_routy>.

A ja potrebuju nejak:
1, bud vytvorit routu, ktera by dokazala toto libovolne url uprostred vytahnout. Zatim se mi nepodarilo tuto routu vytvorit a nevim, jestli to je vubec kvuli hladovosti regularu mozne. Mozna by bylo lepsi neco jako wildcardy /<lang>/<query *>/<poracovani_routy>).

2, prepsat Path u uri a pokracovat v dalsimu zpracovani zbytku.
Momentalne mam totiz vlastni multirouter, ktery vuci databazi matchne url, pak ten zpracovany prostredek jednoduse vyriznu a chci predat zbytek url dalsimu zpracovani v routerech.

bojovyletoun
Člen | 667
+
0
-

/<langos>/<gulas>/<knedlik> nejde,?

protože defaultni maska je pokud se nepletu [^/]

Dj_Oggy
Člen | 67
+
0
-

Bohuzel nejde, protoze to neni jednotneho druhu a to deleni tam muze byt ruznourovnove. Tim myslim:

/<lang>/uroven1/uroven2/uroven3/<ostatni>

nebo

/<lang>/uroven1/…/uroven6/<ostatni>

Bohuzel pocet tech urovni je dynamicky a nemuzu tudiz pouzit pevnou routu.

OK3
Člen | 91
+
0
-

Asi bych se tu proměnnou strukturu URL nesnažil namontovat obecně na routy, ale napsal bych vlastní handler (to je ten tvůj multirouter), kterej vyhodnotí, zda je routa platná (match proti db) a vrátí jednoduchou routu na speciální presenter, kterej je uzpůsobenej pro zobrazování vlastního obsahu podle (třeba) id z db. Teď střílím trochu od boku, nezkoušel jsem, jestli to takhle funguje :-)

Dj_Oggy
Člen | 67
+
0
-

Tohle v podstate delam. Ja si to matchnu a nastavim spravny presenter, jenze jde mi o to, aby pouzil routy k ziskani tech dodatecnych promennych z url a predal je tomu preseneteru, kdyz se bude volat.

Ve vysledku mi jde teda o to, aby z:

/<lang>/uroven1/uroven2/uroven3/<ostatni>

vydoloval to /uroven1/uroven2/uroven3/ a podle toho nastavil presenter (mam uz hotove), a pak aby predal tomu preseneteru prave <lang> a <ostatni> jako promenne z url.

Dj_Oggy
Člen | 67
+
0
-

Vyreseno. Obratil sem logiku a misto prepisovani Path a obchazeni Uri si dynamicky generuju routy doplnene o matchnute url a ty pak predavam Nette.