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