Piotr Burant

Piotr Burant Student,
Politechnika Gdańska

Temat: kilka rouerów - problem

Witam. Utworzyłem 2 routery:
$this->bootstrap('frontcontroller');

$front = $this->getResource('frontcontroller')->getRouter();

$front->addRoute(
'realizacje',
new Zend_Controller_Router_Route('/:lang/:controller/:realizacja/*',
array('lang'=>$idLang,'controller' => 'realizacje','realizacja'=>'0','action' => 'index'))
);

$front->addRoute(
'moj',
new Zend_Controller_Router_Route('/:lang/:controller/:action/*',
array('lang'=>$idLang,'controller' => 'index','action' => 'index'))
);

wywołując taki link:
$this->url(array('realizacja' => 2), 'realizacje');

tworzony jest odpowiedni link w postaci:
domena.pl/pl/realizacje/2

jednak zend źle interpretuje taki link i wywala blad ze nie istanieje action '2'

Message: Action "2" does not exist and was not trapped in __call()
[...]
Request Parameters:

array(3) {
["lang"]=>
string(2) "pl"
["controller"]=>
string(10) "realizacje"
["action"]=>
string(1) "2"
}

Jak zamienię kolejność dodawania to adresy sa interpretowane zgodnie z routerem 'realizacje'

Co robię źle? Moje pomysły się wyczerpały.
Bartosz Ratajczyk

Bartosz Ratajczyk MS SQL Developer

Temat: kilka rouerów - problem

http://framework.zend.com/manual/en/zend.controller.ro...

"Routes are matched in reverse order so make sure your most generic routes are defined first."

Dlatego pewnie dopasowuje nie ten router co chcesz.

To, że wywołujesz view helper url() znaczy tylko tyle, że konstruujesz url wg parametrów danego routingu, a nie że wywołujesz dany routing.

Dopasowywany jest routing 'moj' z parametrami lang=pl, controller=realizacje, action=2 - ale są to nazwy zmiennych. Przechodzisz do kontrolera IndexController() i akcji 2action()
Piotr Burant

Piotr Burant Student,
Politechnika Gdańska

Temat: kilka rouerów - problem

Dzięki za odpowiedz. A co w takim razie zrobić żeby adres domena.pl/pl/realizacje/nazwa_realizacji odsylala do controllera realizacje, akcji index i parametr realizacja odczytany zostal jako 'nazwa_realizacji'?
rewriteMode? czy da się moze jakoś wywołać ten router tak aby zadziałało?
Bartosz Ratajczyk

Bartosz Ratajczyk MS SQL Developer

Temat: kilka rouerów - problem

Może coś w stylu

$front->addRoute(
'realizacje',
new Zend_Controller_Router_Route('/:lang/realizacje/:nazwa/*',
array(
'lang' => $idLang,
'controller' => 'realizacje',
'nazwa' => 'nic',
'action' => 'index'))
);


Routing próbuje się dopasować do pierwszego wzorca. W Twoich po prostu stara się znaleźć routing składający się z dowolnych parametrów i pierwszym trzem przypisuje jakieś znaczenie. Najprościej wydaje mi się dać dedykowany routing do tego co chcesz.
Piotr Burant

Piotr Burant Student,
Politechnika Gdańska

Temat: kilka rouerów - problem

Wielkie dzieki :) Juz tak probowalem i nie dzialalo. dopiero po zamianie routerow. Pierwszy moj a drogi realizacje działa jak powinno :). Nie macie pojęcia jak się ciesze :).

Bardzo Ci dziękuję!!Piotr Burant edytował(a) ten post dnia 23.04.11 o godzinie 14:57

Następna dyskusja:

Zend_DB PDO dziwny problem




Wyślij zaproszenie do