【问题标题】:Page Redirection Issue- Cakephp3 using Jquery页面重定向问题 - Cakephp3 使用 Jquery
【发布时间】:2016-11-29 06:44:35
【问题描述】:

我有一个页面,我在其中保留了一个下拉菜单,用户可以在其中切换语言。我正在使用主题,所以我在 login.ctp 页面上保留了这个下拉列表,并使用 Jquery 将表单值发布到控制器的方法。我不知道 login.ctp 中有两个表单元素,但我的下拉表单元素没有到达特定控制器,而是重定向到登录控制器。

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>

使用该方法的我的用户控制器:

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,但由于访问限制,它会重定向到登录页面。
  • 是的,你是对的!我没有授予未登录用户的访问权限。因此,它强制将其重定向以首先登录。对不起!如果你给出了答案,我会支持你。但无论如何谢谢!

标签: php jquery cakephp-3.0


【解决方案1】:

添加此方法 changeLanguage 以允许如下所示。

$this->Auth->allow('changeLanguage');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-21
    • 2020-09-01
    • 1970-01-01
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-18
    相关资源
    最近更新 更多