Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework]Router
Forum PHP.pl > Forum > PHP > Frameworki
Ikky
Witam

Mam taki link:

http://www.strona.com/index/artykul/title/tytul-artykulu

co zrobic żeby link wygladal tak:

http://www.strona.com/artykul/tytul-artykulu
viking
  1. <?php
  2. new Zend_Controller_Router_Route(
  3.  'artykul/:tytul',
  4.  array('controller' => 'index', 'action' => 'artykul'),
  5.  array('tytul'=>'[a-z0-9_.-]+')
  6. );
  7. ?>
Ikky
niestety nie działa chyba że coś źle zrobiłem

wystarczy ze wrzuce to do np:

protected function _initRoute()
{


w bootstrapie

i powinno hulać?
viking
Dokumentacja ZF, rozdział 12.5. Sorry, ale zabierasz się za dość skomplikowany framework, musisz nauczyć się czytać.
Ikky
  1. <?php
  2. protected function _initRoute()
  3.    {
  4.        $router = $ctrl->getRouter(); // returns a rewrite router by default
  5.        $router->addRoute('artykul',new Zend_Controller_Router_Route
  6.        ('artykul/:tytul',
  7.        array('controller' => 'index','action' => 'artykul'),
  8.        array('tytul'=>'[a-z0-9_.-]+'))
  9.        );
  10.    }
  11. ?>


Fatal error: Call to a member function getRouter() on a non-object in /home/users/sobolczyk_zend/www/application/Bootstrap.php on line 25

sorry ale pracuje na zendzie od 2 godzin wiec poczatki zawsze sa trudne
viking
A z obiektówką? Masz bardzo jasny komunikat. Pomyśl co to jest $ctrl i jak dobrać się do instancji Zend_Controller_Front.
Master Pain
  1. <?php
  2. $front = Zend_Controller_Action::getFrontController();
  3. $router = $front->getRouter();
  4. ?>

I dalej posłużę się kodem vikinga:
  1. <?php
  2. $router->addRoute(
  3.            'artykul',
  4.            new Zend_Controller_Router_Route(
  5.                'artykul/:tytul',
  6.                 array('controller' => 'index', 'action' => 'artykul'),
  7.                 array('tytul'=>'[a-z0-9_.-]+')
  8.            )
  9.        );
  10. ?>

I tak, można go wrzucić w bootstrapie.
Ikky
dzięki bardzo za pomoc ale jeszce mam jeden problem jak przerobić ten kod żeby mieć 2 zmienne w linku zalezy mi na czyms takim

http://www.strona.com/index/aktywacja/id/54/kod/312312312

a chce miec

http://www.strona.com/aktywacja/54/312312312

próbowałem coś takiego ale nie działało:


  1. <?php
  2. $router->addRoute('aktywacja',new Zend_Controller_Router_Route(
  3.               'aktywacja/:id/:kod',
  4.                array('controller' => 'index', 'action' => 'aktywacja'),
  5.                array('id'=>'[a-z0-9_.-]+'),
  6.                array('kod'=>'[a-z0-9_.-]+')
  7.                
  8.                )
  9.                
  10.                );
  11. ?>
pgrzelka
  1. <?php
  2. $router->addRoute('aktywacja',new Zend_Controller_Router_Route_Regex(
  3. 'aktywacja/([0-9]+)/([0-9]+)',
  4. array('controller' => 'index', 'action' => 'aktywacja'),
  5. array(1=>'id', 2=>'kod)
  6. // trzeci array jest używany do back routes czy jakoś tak ;)
  7. )
  8. );
  9. ?>


To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.