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
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
No super ale proč nenapíšeš co se v tom fatal erroru píše? :)
badyto
Profil *
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
nemělo by to být spíš něco jako
... new Zend_Controller_Router_Route(':page', ...)
badyto
Profil *
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
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
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

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0