Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php symfony链接以更改语言并停留在页面上_Php_Symfony1_Internationalization - Fatal编程技术网

Php symfony链接以更改语言并停留在页面上

Php symfony链接以更改语言并停留在页面上,php,symfony1,internationalization,Php,Symfony1,Internationalization,我想做一个链接,将在布局中改变语言。因此,它应该适用于许多路线 比如说 我在/en/myModule页面上 链接应该指向 /de/myModule /fr/myModule 我在这里找到了一个解决方案:http://oldforum.symfony-project.org/index.php/m/70452/ <?php echo link_to( 'Germany', '@default?' . http_build_query(array( 'sf_culture'

我想做一个链接,将在布局中改变语言。因此,它应该适用于许多路线

比如说 我在/en/myModule页面上

链接应该指向 /de/myModule /fr/myModule

我在这里找到了一个解决方案:http://oldforum.symfony-project.org/index.php/m/70452/

<?php echo link_to(
  'Germany', 
  '@default?' . http_build_query(array(
    'sf_culture' => 'de', 
    'module' => $sf_request->getParameter('module'), 
    'action' => $sf_request->getParameter('action'))
  ), null, '&')) ?>

我想我有一个解决方案:

  $uri = sfContext::getInstance()->getRouting()->getCurrentRouteName();
  echo link_to('French', $uri, array('sf_culture'=>'fr')) . ' | ';
  echo link_to('English', $uri, array('sf_culture'=>'en')) . ' | ';
  echo link_to('German', $uri, array('sf_culture'=>'de'));

这是一个好的解决方案还是有更好的解决方案?

我想我有一个解决方案:

  $uri = sfContext::getInstance()->getRouting()->getCurrentRouteName();
  echo link_to('French', $uri, array('sf_culture'=>'fr')) . ' | ';
  echo link_to('English', $uri, array('sf_culture'=>'en')) . ' | ';
  echo link_to('German', $uri, array('sf_culture'=>'de'));

这是一个好办法还是有更好的解决办法?

为什么不为此采取具体行动

public function executeChangeLanguage(sfWebRequest $request)
{
  if (in_array($request->getParameter('lang'), sfConfig::get('app_site_languages'))
  {
   $this->getUser()->setCulture($request->getParameter('lang'));
  }

  // you can ask the browser for referrer or send a parameter to the change language action
  // something like '/change-language?lang=ro&redirect=your page'.
  // if you are sending a redirect parameter you must make sure that it's actually a page within your site
  $referrer = $request->getReferer();
  // or $referrer = $request->getParameter('redirect');

  // you can further check the referrer here
  return $this->redirect($referrer);
}

为什么不为此采取具体行动

public function executeChangeLanguage(sfWebRequest $request)
{
  if (in_array($request->getParameter('lang'), sfConfig::get('app_site_languages'))
  {
   $this->getUser()->setCulture($request->getParameter('lang'));
  }

  // you can ask the browser for referrer or send a parameter to the change language action
  // something like '/change-language?lang=ro&redirect=your page'.
  // if you are sending a redirect parameter you must make sure that it's actually a page within your site
  $referrer = $request->getReferer();
  // or $referrer = $request->getParameter('redirect');

  // you can further check the referrer here
  return $this->redirect($referrer);
}
在布局模板中:

<?php echo link_to(image_tag("flags/gb.gif"), "user_switch_culture", array("language"=>"en", "redirect"=>$sf_request->getUri())) ?>
就在我头上。应该有用

不太好:应该对重定向做一些过滤,以确保它是正确的域名等

在布局模板中:

<?php echo link_to(image_tag("flags/gb.gif"), "user_switch_culture", array("language"=>"en", "redirect"=>$sf_request->getUri())) ?>
就在我头上。应该有用


不太好:应该对重定向进行一些筛选,以确保它是正确的域名等。

为什么不想使用默认路由?为什么不想使用默认路由?如果显示在404页面上,这可能会导致问题。不要使用sfContext::getInstance()(请参阅:)这可能会导致问题,如果显示在404页面上。不要像上一条评论中所说的那样使用sfContext::getInstance()(请参见:),您必须检查引用者(请参见评论
//您可以在此处进一步检查引用者
)。否则,有些人可能会出于自己的目的使用您的重定向,如上一条评论中所述,您必须检查推荐人(请参阅评论
//您可以在此处进一步检查推荐人
)。否则,有些人可能会出于自己的目的使用您的重定向