如何在MVC模型中在不刷新的情况下更改页面语言


How to change the page language without refresh in MVC model?

settings.php中,我输入了一些语言的真实姓名、爱好、城市和选择标签

html表单很简单,我不会复制它:)

这是表单的php代码

<?php
if(isset($_POST['submit'])){

  if($this->edit->process()){
    $s = 1; 
  }
}
if($s){echo '<p id="success">Success</p>';}

?>

这在视图文件中,当表单提交时,$This->edit=用于更新用户数据的模型。

一切都很好,但在head.php中有一个代码

<?php $lang = $this->lange('global',$this->getUser->language($_SESSION['userID']));?>

有了他,就可以获得用户当前的语言,然后用lange()加载文件

因此,如果提交是这样的,输入和选择标记会随着用户的选择而变化,但为了查看新语言,他们必须刷新页面。这是不好的,因为用户可能会被认为他们做错了什么。

但是,如果表单的方法="POST",则页面正在刷新,并且仍然使用旧语言

  1. 在没有重定向的情况下,很难更改DOM模型中的所有文本来更改语言。我怀疑这真的是你的愿望
  2. 您应该在处理任何POST表单后使GET方法重定向。因此,您必须重新加载页面,而不是打印任何"成功"消息
  3. 使用会话存储语言不是一个好方法,必须通过页面地址设置语言-子域(首选)或虚拟目录