konto usunięte

Temat: Problem z routerem.

Witam.

Usiłuję dogadać się z routerem w ZF1. Chcę osiągnąć taki efekt, że identyfikator języka (pl, en, de) ma być przechowywany jako subdomena. Ponadto będzie jedna wyjątkowa subdomena admin, która wskazuje na inny moduł.

Do tego nad tym wszystkim mają działać przyjazne użytkownikom linki, zdefiniowane z góry jak np.
about.html - index/about
contact.html - index/contact
tak, aby obowiązywały pośród tych domen, czyli otworzy się zarówno strona
de.domain.tld/about.html
jak i:
en.domain.tld/about.html
otworzą tą samą stronę tylko z innym tłumaczeniem.

Problem dotyczy jednak samej konfiguracji routera:

; -- linki od subdomen języka
resources.router.routes.lang.type = "Zend_Controller_Router_Route_Hostname"
resources.router.routes.lang.route = ":language.free-shoutcast.com"
resources.router.routes.lang.reqs.language= "[a-z]{2}"
resources.router.routes.lang.defaults.language = "de"
resources.router.routes.lang.defaults.controller = "index"
resources.router.routes.lang.defaults.action = "index"

; -- linki od subdomeny admin.
resources.router.routes.admin.type = "Zend_Controller_Router_Route_Hostname"
resources.router.routes.admin.route = ":admin.free-shoutcast.com"
resources.router.routes.admin.defaults.module = "admin"
resources.router.routes.admin.chains.index.defaults.controller = "index"
resources.router.routes.admin.chains.index.defaults.action = "admin"

resources.router.routes.radio.chains.listen.route = "listen/:station"
resources.router.routes.radio.chains.listen.defaults.controller = "index"
resources.router.routes.radio.chains.listen.defaults.action = "listen"

; -- statyczne strony
resources.router.routes.index.route = "/index.html"
resources.router.routes.index.defaults.controller = "index"
resources.router.routes.index.defaults.action = "index"
resources.router.routes.index.defaults.module = "default"

resources.router.routes.newserver.route = "/neuer-server.html"
resources.router.routes.newserver.defaults.controller = "server"
resources.router.routes.newserver.defaults.action = "create"

resources.router.routes.contact.route = "/kontakt.html"
resources.router.routes.contact.defaults.controller = "index"
resources.router.routes.contact.defaults.action = "contact"

resources.router.routes.ranking.route = "/webradio-ranking.html"
resources.router.routes.ranking.defaults.controller = "ranking"
resources.router.routes.ranking.defaults.action = "index"


No i jakiej kolejności bym wyżej nie zastosował, to coś się krzaczy. To działa admin i jezyki, a nie strony statyczne. To strony statyczne i tłumaczenie, ale admin leży. I tak w kółko. Jakoś nie mogę tego zrozumieć.

Przy obecnej konfiguracji działa panel admina i strony statyczne z domyślnym językiem de, nawet gdy ustawię subdomenę na jakiś inny język.

Ale kiedy przejdę na stronę główną z ustawionym jezykiem: en.domain.tld, to po prostu przekierowuje mnie na domain.tld.

Jak temu zaradzić?

Ponadto router zdaje się, że powinien ustawić zmienną "language", kiedy próbuję się do niej dostać poprzez Plugin kontrollera - dostaję null. Jak się do tego dorwać?

class Stream_Controller_Plugin_SubTranslate extends Zend_Controller_Plugin_Abstract
{

public function routeShutdown(Zend_Controller_Request_Abstract $request)
{
$translate = Zend_Registry::get("Zend_Translate");

$urlLang = $request->getParam('language');

Powyższy $urlLang jest po prostu nullem.Ten post został edytowany przez Autora dnia 24.06.13 o godzinie 18:39

konto usunięte

Temat: Problem z routerem.

To może chociaż ktoś wie jak to zrobić bez application.ini, bo zdaje się, że da się jakoś przy pomocy kodu.

Temat: Problem z routerem.

Wszystko zależy od konfiguracji, ale spróbuj może w ten sposób. Dodaj do bootstrapa metodę np.:

protected function _initRoutes(){
require_once('configs/router.php');
}


w pliku configs/router.php spróbuj zdefiniować routingi w ten sposób:

<?php

$front = Zend_Controller_Action::getFrontController();
$router = $front->getRouter();

//----------- ponizej dodanie routingow

$router->addRoute('konto_oferty_page', new Zend_Controller_Router_Route(
"konto/oferty/page/:page",
array(
'module' => 'konto',
'controller' => 'oferty',
'action' => 'index',
'page' => 1
)
)
);

// itd.


Możesz używać _Route, _Route_Static czy też _Route_Regex... więcej na: http://framework.zend.com/manual/1.12/en/zend.controll...

Nigdy wcześniej nie potrzebowałem zmagać się z routowaniem po subdomenach, ale myślę, że powinno to się udać w ten sposób.

Następna dyskusja:

Zend_DB PDO dziwny problem




Wyślij zaproszenie do