0
我有一個頁面,我已經保持在用戶可以切換語言的下拉菜單。我使用的是主題,所以我在login.ctp頁面上保留了這個下拉列表,並使用Jquery向控制器的方法發佈表單值。我在login.ctp中有兩個表單元素,我不知道,但我的下拉表單元素沒有達到特定的控制器,而是重定向到登錄控制器。頁面重定向問題 - CakePHP3使用Jquery
login.ctp
<form id="locale_form" method="post" action="changeLanguage">
<div id="language" class="language" align="right">
Please Select Language
<select id="languageselect" name="languageselect">
<option name="select" value="lang">Select A Language</option>
<option name="en_EN" value="en_EN">English</option>
<option name="de_DE" value="de_DE">German</option>
</select>
</div>
</form>
<div id="login-page">
<div class="container">
<!-- <form class="form-login"> -->
<?= $this->Flash->render('auth') ?>
<?= $this->Form->create('',['class'=> 'form-login','id'=>'login_form']) ?>
-----------------Login Form Code----------------
使用jquery onchange我正在切換語言。
<script type="text/javascript">
$("select").change(function(){
$("#locale_form").submit();
});
</script>
我Userscontroller withing這個方法:
use Cake\I18n\I18n;
class UsersController extends AppController
{
public function changeLanguage()
{
/*I18n::locale('de_DE');
echo "reached here";*/
print_r($this->request->data());die();
if ($this->request->is('post'))
{
$lang = $this->request->data('languageselect');
$this->request->session()->write('locale', $lang);
I18n::locale($lang);
return $this->redirect(['action' => 'login']);
}
}
我不知道爲什麼,但我使用id = 「locale_form」 表單元素沒有達到它的動作元素。我正在使用CakePHP3,我不知道我在哪裏搞砸了。
您是否允許對未登錄用戶使用'changeLanguage'功能?我的猜測(你可以通過Firefox,Chrome等內置的網絡活動監視器來確認),它會調用changeLanguage,但由於訪問限制,它會重定向到登錄頁面。 –
是的,你是對的!我沒有訪問未登錄的用戶。所以它強制重定向它首先登錄。抱歉!如果你已經給出答案,我會贊成你。但無論謝謝! –