plugins - Zend cookie issue -
i'm working on zend 1.11 webapp. built language-selector plugin switching language (it & en) depending on user input.
this have:
class ls_controller_plugin_langselector extends zend_controller_plugin_abstract { public function predispatch(zend_controller_request_abstract $request) { if($request->getparam('lang')) { $lang=$request->getparam('lang'); setcookie('lang', $lang, time() + (3600)); echo "we set cookie"; } else if (isset($_cookie['lang'])) { $lang=$_cookie['lang']; echo $lang; } else { echo 'we here.but can't understand why'; $lang='en'; var_dump($_cookie); } switch(strtolower($lang)) { case 'en': $locale="en_us"; break; case 'it': $locale="it_it"; break; default: $locale="en_us"; } $zl=new zend_locale(); $zl->setlocale($locale); zend_registry::set('zend_locale',$zl); $translate=new zend_translate( array( 'adapter' => 'gettext', 'content' => application_path.'/configs/languages/'.$locale.'.mo', 'locale' => 'en' ) ); zend_registry::set('zend_translate',$translate); } }
[bootstrap.php]
class bootstrap extends zend_application_bootstrap_bootstrap { protected function _initroutes() { $frontcontroller=zend_controller_front::getinstance(); $router=$frontcontroller->getrouter(); $router->removedefaultroutes(); $router->setglobalparam('lang','en'); $router->addroute( 'lang', new zend_controller_router_route('/:lang/:controller/:action', array('lang'=>':lang', 'module'=>'default', 'controller'=>'index', 'action'=>'index' ) ) ); $router->addroute( 'langcontroller', new zend_controller_router_route('/:controller/:action', array( 'module'=>'default', 'controller'=>'index', 'action'=>'index' ) ) ); $router->addroute( 'langindex', new zend_controller_router_route('/:lang', array('lang'=>':lang', 'module'=>'default', 'controller'=>'index', 'action'=>'index' ) ) ); $router->addroute( 'langnothing', new zend_controller_router_route('', array('lang'=>'en', 'module'=>'default', 'controller'=>'index', 'action'=>'index' ) ) ); } }
the point that:
- i type in browser full url mysite.com/it/index/index , echo out "we set cookie"..wich fine should able browse website italian cookie set don't. whenever click on link (ex. /index/contactus..links not specify 'lang' parameter!) navigate page it's in english again (i echoed out message:"we here.but can't understand why").
shouldn't cookie set?
the problem is, don't specify path cookie. set current page only.
if browse (sub)site, cookie not valid path , doesnt transmitted. should set lang-cookie "/" path.
see setcookie() documentation:
the path on server in cookie available on. if set '/', cookie available within entire domain. if set '/foo/', cookie available within /foo/ directory , sub-directories such /foo/bar/ of domain. the default value current directory cookie being set in.
Comments
Post a Comment