javascript - 使用 Opencart 在我的 Controller 中无法识别 POST 请求

标签 javascript php jquery opencart opencart2.x

我的代码有问题。在我的设置中,我创建了一个用于语言选择的页面。我在语言模板和 Controller 上复制了一些 opencart 的代码。但我的问题是在传递我的表单后,操作 Controller 没有从我的表单中获取任何 POST 数据。

<form action="{{ action }}" method="POST" enctype="multipart/form-data" id="form-language">
    <div class="col-lg-4">
        <div class="border_index_in">
            <div class="holder">
                <h3>ENGLISH</h3>
                <button class="language-select btn btn-green" type="button" name="en-gb">Choose</button>
            </div>
        </div>
    </div>
    <div class="col-lg-4">
        <div class="border_index_in">
            <div class="holder">
                <h3>日本語</h3>
                <button class="language-select btn btn-green" type="button" name="jap">選択</button>
            </div>
        </div>
    </div>
    <div class="col-lg-4">
        <div class="border_index_in">
            <div class="holder">
                <h3>中文</h3>
                <button class="language-select btn btn-green" type="button" name="zh-hk">选择</button>
            </div>
        </div>
    </div>
</form>

JS:

  // Language
    $('#form-language .language-select').on('click', function(e) {
        e.preventDefault();
        $('#form-language input[name=\'code\']').val($(this).attr('name'));
        $('#form-language').submit();
    });

显示我的语言选择页面的 Controller

public function language_switch() {
    $this->load->model('setting/extension');
    $this->document->setTitle($this->config->get('config_meta_title'));
    $this->document->setDescription($this->config->get('config_meta_description'));
    $this->document->setKeywords($this->config->get('config_meta_keyword'));

    if (isset($this->request->get['route'])) {
        $this->document->addLink($this->config->get('config_url'), 'canonical');
    }

    $data['action'] = $this->url->link('common/language/language');
    $data['code'] = $this->session->data['language'];

    $styles_array = array(
        'catalog/view/theme/onemidorie/stylesheet/style.css'
    );

    $scripts_array = array(

    );

    foreach($styles_array as $st) {
        $this->document->addStyle($st);
    }

    foreach($scripts_array as $sc) {
        $this->document->addScript($sc);
    }

    $data['styles'] = $this->document->getStyles();
    $data['scripts'] = $this->document->getScripts();

    $data['footer'] = $this->load->controller('common/footer');
    $data['header'] = $this->load->controller('common/header');

    $this->response->setOutput($this->load->view('common/language_selection', $data));

}

应该接受我表单中的 POST 数据的 Controller :

public function language() {
        print_r($this->request->post['code']); //Notice: Undefined index: code 
        die;
        if (isset($this->request->post['code'])) {
            $this->session->data['language'] = $this->request->post['code'];
        }

        if (isset($this->request->post['redirect'])) {
            $this->response->redirect($this->request->post['redirect']);
        } else {
            $this->response->redirect($this->url->link('common/home'));
        }
    }

你能帮我这个吗?

最佳答案

你应该使用 print_r($this->请求->发布); 死;

然后您将获得一些发布数据。

因为您定义了“en-gb”、“jap”和“zh-hk”等名称。所以请使用上面的代码即可得到解决方案。

关于javascript - 使用 Opencart 在我的 Controller 中无法识别 POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45024586/

相关文章:

javascript - Javascript 或 Jquery 中的连续倒数计时器

jquery - jQuery 模态形式的 Css 背景淡入淡出问题

javascript - 如何将 Canvas 图像数据复制到其他变量?

php - 使用 php 或 avconv 获取 .mov 视频旋转

javascript - Date.now() 返回以微秒为单位的值,而不是以毫秒为单位的值

php - 超过两行时包含字符串计数的 MySQL 过滤器

php - FFMPEG 0.6.5 版视频旋转

javascript - onchange 函数在初始文本框中工作,但在另一个文本框中不起作用

javascript - 如何忽略特殊的 td 节点及其整个子节点?

javascript - 在 react-native 中从 superview 的底部布局一个按钮