Javascript POST请求不';我无法使用Opencart在控制器中识别
我的代码有问题。在我的设置中,我为语言选择创建了一个页面。我在语言模板和控制器上复制了一些opencart的代码。但我的问题是,在传递表单后,操作控制器不会从表单中获取任何POST数据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
<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上交流此问题。我将解决此问题。