Autor | Zpráva | ||
---|---|---|---|
badyto Profil * |
Zdravim,
prave zacinam so zend frameworkom, a chcel by som spravit nasledovnu vec: mam povedzme ale 5 podstranok (o-nas, kontakt, informacie…), na tychto strankach sa meni iba nadpis a text, ktory vyberam z databazy. Musim spravit 5x ten isty controller len s inym menom? napr IndexController, KontaktController… Alebo sa to da neako nastavit aby sa pre urcite sekcie vyuzival iba jeden controller? Chcel by som zachovat url stranok napr www.stranka.sk/kontakt, www.stranka.sk/o-nas... Moderátor Majkl578: Tvůj projev je špatně srozumitelný, piš prosím s diakritikou.
|
||
Nox Profil |
#2 · Zasláno: 27. 7. 2010, 16:45:06 · Upravil/a: Nox
Nevím jak v Zendu, v Kohaně (ikdyž teda taky začínám) v nastavení routování v takovém případě nastavíš napevno controller i action a controller už si jen vezme parametr a to bude ten název stránky (třeba "o-nas") a to už pak budeš vědět co s tím
tady by asi něco mělo být http://framework.zend.com/manual/en/zend.controller.router.html (vypadá to skoro stejně, takže asi to tak půjde) Mj. celý web je 1 stránka kde se mění nadpis a text? Na to je FW, tuplem FW kalibru Zend, docela atomovka na komára (pokud to není jen na vyzkoušení) |
||
badyto Profil * |
no podla toho manualu som to skusal takto:
$router = new Zend_Controller_Router_Rewrite(); $route = new Zend_Controller_Router_Route('kontakt',array( 'controller' => 'index', 'action' => 'index' ) ); $router->addRoute('kontakt', $route); Ale hadze mi to fatal error. Neviem co s tym… Ono tam chcem dorobit aj eshop a neaky cms, to by bol riadny overkill pouzit zend na taku jednoduchu stranku. Moderátor Majkl578: Tvůj projev je špatně srozumitelný, piš prosím s diakritikou.
|
||
Nox Profil |
#4 · Zasláno: 27. 7. 2010, 17:33:40
No super ale proč nenapíšeš co se v tom fatal erroru píše? :)
|
||
badyto Profil * |
#5 · Zasláno: 27. 7. 2010, 17:40:48
Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (kontakt)' in D:\www\kruh\library\Zend\Controller\Dispatcher\Standard.php:248 Stack trace: #0 D:\www\kruh\library\Zend\Controller\Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #1 D:\www\kruh\index.php(40): Zend_Controller_Front->dispatch() #2 {main} thrown in D:\www\kruh\library\Zend\Controller\Dispatcher\Standard.php on line 248 |
||
Nox Profil |
#6 · Zasláno: 27. 7. 2010, 17:43:10
nemělo by to být spíš něco jako
... new Zend_Controller_Router_Route(':page', ...) |
||
badyto Profil * |
#7 · Zasláno: 27. 7. 2010, 18:08:50
No tak som na to konecne prisiel :-)
takto to treba: $frontController = Zend_Controller_Front::getInstance(); $router = new Zend_Controller_Router_Rewrite(); $route = new Zend_Controller_Router_Route('kontakt',array( 'controller' => 'index', 'action' => 'index', 'stranka' => 'kontakt' ) ); $router->addRoute('kontakt', $route); $frontController->setRouter($router); a v samotnom indexControlleri potom: function indexAction() { $request = $this->getRequest(); $this->stranka = $request->getParam('stranka'); if(empty($this->stranka)) $this->stranka='index'; $staticke=new Staticke(); $row = $staticke->fetchRow($staticke->select() ->from($staticke,array('nadpis','text','pridane')) ->where("url = ?",$this->stranka) ); $this->view->stranka=$row; $this->view->title="Kruh"; } Konecne mi to vsetko facha tak ako ma :-) |
||
Nox Profil |
#8 · Zasláno: 27. 7. 2010, 18:12:32 · Upravil/a: Nox
badyto:
Pokud to chápu dobře, tak ale takto budeš muset dělat zvlášť router pro každou stránku, ne? když bys místo 'kontakt' dal ':stranka' tak bys to měl mít automaticky (ohledně omezení stránek... Kohana umožňuje použít na parametr regexp jako array("stranka" => "kontakt|o-nas|uvod"), možná má Zend něco taky... anebo bys provedl kontrolu uvnitř a případně zobrazit/přesměroval na 404) |
||
badyto Profil * |
No prave si nad tym lamem hlavu.
Keby som vedel ako sa dostanem v zende k tej polozke "kontakt" z URI domena.sk/kontakt, tak by som to urobil nasledovne: $polozka="sem neako dostat napr "kontakt" z URI domena.sk/kontakt"; if(in_array($polozka,array('kontakt','o-nas','uvod'))){ $route = new Zend_Controller_Router_Route($polozka,array( 'controller' => 'index', 'action' => 'index', 'stranka' => $polozka ) ); } lebo keby tam jednoducho napisem len :stranka tak by automaticky na ten indexController presmerovalo vsetko, aj eshop napriklad ktory uz ale potrebujem na vlastny controller. Moderátor Majkl578: Tvůj projev je špatně srozumitelný, piš prosím s diakritikou.
|
||
Nox Profil |
#10 · Zasláno: 27. 7. 2010, 19:59:11
badyto:
1) pokud to chápu dobře tak :page by "sežralo" jenom /něco a ne /něco/... a předpokládám, že eshop budeš mít nějak odlišený i přes URL 2) i kdyby ne, tak toto pokud vím řeší pořadí/priorita Routerů (podobně jako pořadí pravidla v htaccess), takže pokud se eshop "odchytí" už dřív, tak k tomuto neprojde |
||
Časová prodleva: 14 let
|
0