I think, module save button code is correct. but, Here, I can not understand. what is issue in my custom module. I have double check. It is working fine in localhost & my demo site.
Please See following screenshot. when, I do click on save button from module in admin. So, It does redirect in "The page you requested cannot be found!" front side. but, page URL is still admin.

My admin module Controller File code
Code: Select all
<?php
class ControllerModuleMytheme extends Controller {
private $error = array();
public function index() {
$language = $this->load->language('module/mytheme');
$data = array_merge($language);
$this->document->setTitle($this->language->get('heading_title'));
$this->load->model('setting/setting');
$this->load->model('tool/image');
if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
$this->model_setting_setting->editSetting('mytheme', $this->request->post);
$this->session->data['success'] = $this->language->get('text_success');
$this->response->redirect($this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL'));
}
$data['text_image_manager'] = 'Image manager';
$data['token'] = $this->session->data['token'];
$text_strings = array(
'heading_title',
'text_enabled',
'text_disabled',
'text_content_top',
'text_content_bottom',
'text_column_left',
'text_column_right',
'entry_status',
'entry_sort_order',
'button_save',
'button_cancel',
);
foreach ($text_strings as $text) {
$data[$text] = $this->language->get($text);
}
// store config data
$config_data = array(
//Status
'mytheme_status',
'mytheme_skin',
//Body Background
'mytheme_background_color',
'mytheme_button_color',
'mytheme_button_hover_color',
'mytheme_button_text_color',
);
foreach ($config_data as $conf) {
if (isset($this->request->post[$conf])) {
$data[$conf] = $this->request->post[$conf];
} else {
$data[$conf] = $this->config->get($conf);
}
}
if (isset($this->error['warning'])) {
$data['error_warning'] = $this->error['warning'];
} else {
$data['error_warning'] = '';
}
$data['breadcrumbs'] = array();
$data['breadcrumbs'][] = array(
'text' => $this->language->get('text_home'),
'href' => $this->url->link('common/dashboard', 'token=' . $this->session->data['token'], 'SSL')
);
$data['breadcrumbs'][] = array(
'text' => $this->language->get('text_module'),
'href' => $this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL')
);
$data['breadcrumbs'][] = array(
'text' => $this->language->get('heading_title'),
'href' => $this->url->link('module/mytheme', 'token=' . $this->session->data['token'], 'SSL')
);
$data['action'] = $this->url->link('module/mytheme', 'token=' . $this->session->data['token'], 'SSL');
$data['cancel'] = $this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL');
if (isset($this->request->post['mytheme_module'])) {
$modules = explode(',', $this->request->post['mytheme_module']);
} elseif ($this->config->get('mytheme_module') != '') {
$modules = explode(',', $this->config->get('mytheme_module'));
} else {
$modules = array();
}
if (isset($this->request->post['mytheme_status'])) {
$data['mytheme_status'] = $this->request->post['mytheme_status'];
} else {
$data['mytheme_status'] = $this->config->get('mytheme_status');
}
$this->load->model('localisation/language');
$data['languages'] = $this->model_localisation_language->getLanguages();
$data['modules'] = $modules;
if (isset($this->request->post['mytheme_module'])) {
$data['mytheme_module'] = $this->request->post['mytheme_module'];
} else {
$data['mytheme_module'] = $this->config->get('mytheme_module');
}
$data['mytheme_modules'] = array();
$data['header'] = $this->load->controller('common/header');
$data['column_left'] = $this->load->controller('common/column_left');
$data['footer'] = $this->load->controller('common/footer');
$this->response->setOutput($this->load->view('module/mytheme.tpl', $data));
}
protected function validate() {
if (!$this->user->hasPermission('modify', 'module/mytheme')) {
$this->error['warning'] = $this->language->get('error_permission');
}
return !$this->error;
}
}
Any clue?