Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript POST请求不';我无法使用Opencart在控制器中识别_Javascript_Php_Jquery_Opencart_Opencart2.x - Fatal编程技术网

Javascript POST请求不';我无法使用Opencart在控制器中识别

Javascript POST请求不';我无法使用Opencart在控制器中识别,javascript,php,jquery,opencart,opencart2.x,Javascript,Php,Jquery,Opencart,Opencart2.x,我的代码有问题。在我的设置中,我为语言选择创建了一个页面。我在语言模板和控制器上复制了一些opencart的代码。但我的问题是,在传递表单后,操作控制器不会从表单中获取任何POST数据 <form action="{{ action }}" method="POST" enctype="multipart/form-data" id="form-language"> <div class="col-lg-4"> <div class="bor

我的代码有问题。在我的设置中,我为语言选择创建了一个页面。我在语言模板和控制器上复制了一些opencart的代码。但我的问题是,在传递表单后,操作控制器不会从表单中获取任何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>
显示我的语言选择页面的控制器

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数据的控制器:

  // Language
    $('#form-language .language-select').on('click', function(e) {
        e.preventDefault();
        $('#form-language input[name=\'code\']').val($(this).attr('name'));
        $('#form-language').submit();
    });
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'));
        }
    }
你能帮我吗?

你应该用 打印($this->request->post); 死亡

然后您将获得一些post数据

因为您定义的名称类似于“en gb”、“jap”和“zh hk”。所以请使用上面的代码,然后您可以得到解决方案。

您应该使用 打印($this->request->post); 死亡

然后您将获得一些post数据


因为您定义的名称类似于“en gb”、“jap”和“zh hk”。所以请使用上面的代码,然后您就可以得到解决方案。

您没有发布任何数据-您只是显示了一个按钮。使用更像

<input type="submit" value="english" name="lang"/>
<input type="submit" value="japanese" name="lang"/>

然后看看是英文、日文还是其他语言。

你没有发布任何数据,只是显示了一个按钮。使用更像

<input type="submit" value="english" name="lang"/>
<input type="submit" value="japanese" name="lang"/>

看看是英语、日语还是其他语言。

您可以在/catalog/controller/startup/startup.php中找到opencart是如何设置语言的:

// Overwrite the default language object
$language = new Language($code);
$language->load($code);

$this->registry->set('language', $language);
因此,在控制器中,什么应该接受POST数据,您应该在加载语言之前复制此代码:

// $this->request->post['code'] = 'en-gb' or 'ru-ru' or whatever.

$language = new Language($this->request->post['code']);
$language->load($this->request->post['code']);
$this->registry->set('language', $language);

// now opencart use new language and you can use it too:

$this->load->language('common/header');
$text_home = $this->language->get('text_home');

这在opencart 2中对我很有用,您可以在/catalog/controller/startup/startup.php中找到opencart是如何设置语言的:

// Overwrite the default language object
$language = new Language($code);
$language->load($code);

$this->registry->set('language', $language);
因此,在控制器中,什么应该接受POST数据,您应该在加载语言之前复制此代码:

// $this->request->post['code'] = 'en-gb' or 'ru-ru' or whatever.

$language = new Language($this->request->post['code']);
$language->load($this->request->post['code']);
$this->registry->set('language', $language);

// now opencart use new language and you can use it too:

$this->load->language('common/header');
$text_home = $this->language->get('text_home');

这对我在opencart 2中的工作很有效,如果我这样做,输出是一个空数组:(请共享您的信息或在skype:jks0586上交流此问题。我将解决此问题。如果我这样做,输出是一个空数组:(请共享您的信息或在skype:jks0586上交流此问题。我将解决此问题。