Autor | Zpráva | ||
---|---|---|---|
noName Profil * |
#1 · Zasláno: 4. 9. 2013, 16:05:14
Zdravím,
na stránkách bych chtěl mít url ve tvaru /novinky a detail novinky /<id>-<name> a pak třeba /produkty a detail produktu /<id>-<product>. Problém nastává v tom, že pokud nedám před ten detail třeba produkt/<id>-<product> tak se mi routa pro novinky a pro produkty bije a neví, kterou má použít. Jakým způsobem se to dá řešit? Díky. |
||
tiso Profil |
#2 · Zasláno: 4. 9. 2013, 16:17:28
Jedna možnosť je upraviť routy aby sa nebili, napríklad
/n<id>-<name> , /p<id>-<product> . Rozhodni sa ktorá je pre teba dôležitá zachovať a ktorú zmeníš.
|
||
aDAm Profil |
#3 · Zasláno: 4. 9. 2013, 17:02:47
Tak to že se ti routy bijou je snad logické ne? Chceš pro dvě stránky identickou routu. Řešením je že tam budeš mít vlastní pravidlo co prohledá databázi a zjistí zda chceš zobrazit novinku nebo produkt a podle toho nastaví presenter atd.
|
||
Jan Tvrdík Profil |
#4 · Zasláno: 4. 9. 2013, 17:09:30
noName:
Celé by to mohlo vypadat třeba takto: $router[] = new Route('<presenter [a-z]+>', [ 'presenter' => [ Route::FILTER_TABLE => [ 'produkty' => 'Products', 'novinky' => 'News', ], Route::FILTER_STRICT => TRUE, ], 'action' => 'default', ]); $router[] = new Route('n<id \d+>-<slug>', 'News:show'); $router[] = new Route('p<id \d+>-<slug>', 'Products:show'); |
||
tiso Profil |
#5 · Zasláno: 4. 9. 2013, 22:09:37
Jan Tvrdík: ďakujem. Myslel som si že to ide, ale nevedel som ako.
|
||
aDAm Profil |
#6 · Zasláno: 5. 9. 2013, 11:06:07
a není už "hezčí" do té url hodit célé "news" a "products"? což bude přímo presenter?
|
||
Časová prodleva: 12 dní
|
|||
noName Profil * |
#7 · Zasláno: 17. 9. 2013, 21:23:41
Jan Tvrdík:
Díky za odpověď. Teď jsem se k tomu dostal a asi jsem to špatně vysvětlil. Já bych potřeboval mít jen url ve tvaru /<product_name> nebo třeba /<news_name> takže by pak url vlastně vypadaly takto: odkaz.cz/nazev-novinky a u produktu odkaz.cz/produkt-a. Problém je v tom, že router prochází routy postupně jak je tam zapíšu. Takže když budu mít: ... Route('produkty', 'Products:default'); //výpis všech produktů ... Route('novinky', 'News:default'); //výpis všech novinek ... Route('<product_name>', 'Products:detail'); //vypíše detail produktu ... Route('<news_name>', 'News:detail'); //vypíše detail produktu Takto to však nebude fungovat, protože když dám odkaz.cz/product a odkaz.cz/novinka tak to spadne do routy Route('<product_name>', 'Products:detail'); . Nevím však jak to vyřešit aby se poznalo, kterou stránku má zobrazit. Díky.
|
||
aDAm Profil |
#8 · Zasláno: 17. 9. 2013, 21:29:00
Což je snad logické ne? Je nějaký podstatný důvod to takto nešikovně řešit?
|
||
Jan Tvrdík Profil |
#9 · Zasláno: 17. 9. 2013, 21:33:48
|
||
Časová prodleva: 29 dní
|
|||
noName Profil * |
#10 · Zasláno: 16. 10. 2013, 14:17:38
Jan Tvrdík:
Promiň, že píšu tak pozdě, ale dostal jsem se k tomu až teď. Děkuji, je to přesně co jsem potřeboval. Podobně jsem to chtěl udělat, ale měl jsem strach, aby to nebylo moc pomalé. Máš s tím zkušenost při velkém množství dat? Ještě bych potřeboval poradit, jak vyřešit problém s handlery a formulářemi. Když se pokusím použít třeba handler <a n:href="delete!, 'id' => 5">Delete</a> tak mi to vypíše: No route for Front:News:detail(id=5, slug=novinka, do=delete). To samé při odeslání formuláře. Mohl by jsi mi prosím poradit jak to vyřešit? Díky.
|
||
Časová prodleva: 4 dny
|
|||
Jakubb Profil * |
#11 · Zasláno: 20. 10. 2013, 20:01:07
Ahoj,
řeším stejnou věc. Nevíte někdo, jakým způsobem odesílat formuláře, aby s handlery nebyl problém? Díky moc, Jakub |
||
Jan Tvrdík Profil |
#12 · Zasláno: 20. 10. 2013, 20:26:27
noName:
Máš špatně napsaný router, těžko říct, kde je chyba, když jsi sem nedal zdroják. Jakubb: To samé, nehledej chybu ve formulářích, ale v routerech. |
||
Časová prodleva: 10 let
|
0