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

Popular posts from this blog

objective c - Change font of selected text in UITextView -

php - Accessing POST data in Facebook cavas app -

c# - Getting control value when switching a view as part of a multiview -