Php symfony链接以更改语言并停留在页面上
我想做一个链接,将在布局中改变语言。因此,它应该适用于许多路线 比如说 我在/en/myModule页面上 链接应该指向 /de/myModule /fr/myModule 我在这里找到了一个解决方案:http://oldforum.symfony-project.org/index.php/m/70452/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'
<?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()(请参见:),您必须检查引用者(请参见评论//您可以在此处进一步检查引用者)。否则,有些人可能会出于自己的目的使用您的重定向,如上一条评论中所述,您必须检查推荐人(请参阅评论//您可以在此处进一步检查推荐人
)。否则,有些人可能会出于自己的目的使用您的重定向