2017-04-17 81 views
0

我在我的模塊的管理部分有這個麻煩。我的OpenCart版本:2.3.0.2。 問題在哪裏?OpenCart 2.3.0.2無法保存自定義模塊設置

管理員/控制器/擴展/模塊/ mymodule.php

<?php 
class ControllerExtensionModuleMyModule extends Controller { 
private $error = array(); 

public function index() { 
    $this->load->language('extension/module/mymodule'); 
    $this->load->model('setting/setting'); 
    $this->document->setTitle($this->language->get('heading_title')); 

    if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) { 
     $this->model_setting_setting->editSetting('mymodule', $this->request->post); 
     $this->session->data['success'] = $this->language->get('text_success'); 
     $this->response->redirect($this->url->link('extension/extension', 'token=' . $this->session->data['token'] . '&type=module', true)); 
    } 

    $data['heading_title'] = $this->language->get('heading_title'); 
    $data['text_edit'] = $this->language->get('text_edit'); 
    $data['entry_text'] = $this->language->get('entry_text'); 

    $data['button_save'] = $this->language->get('button_save'); 
    $data['button_cancel'] = $this->language->get('button_cancel'); 

    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'], true) 
    ); 
    $data['breadcrumbs'][] = array(
     'text' => $this->language->get('text_extension'), 
     'href' => $this->url->link('extension/extension', 'token=' . $this->session->data['token'] . '&type=module', true) 
    ); 
    if (!isset($this->request->get['module_id'])) { 
     $data['breadcrumbs'][] = array(
      'text' => $this->language->get('heading_title'), 
      'href' => $this->url->link('extension/module/mymodule', 'token=' . $this->session->data['token'], true) 
     ); 
    } else { 
     $data['breadcrumbs'][] = array(
      'text' => $this->language->get('heading_title'), 
      'href' => $this->url->link('extension/module/mymodule', 'token=' . $this->session->data['token'] . '&module_id=' . $this->request->get['module_id'], true) 
     ); 
    } 

    $data['action'] = $this->url->link('extension/module/mymodule', 'token=' . $this->session->data['token'], true); 

    $data['cancel'] = $this->url->link('extension/extension', 'token=' . $this->session->data['token'] . '&type=module', true); 

    if (isset($this->request->post['text_example'])) { 
     $data['text_example'] = $this->request->post['text_example']; 
    } else { 
     $data['text_example'] = $this->config->get('text_example'); 
    } 

    $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('extension/module/mymodule', $data)); 
} 

protected function validate() { 
    if (!$this->user->hasPermission('modify', 'extension/module/mymodule')) { 
     $this->error['warning'] = $this->language->get('error_permission'); 
    } 

    return !$this->error; 
} 
} 

管理員/視圖/模板/擴展/模塊/ mymodule.tpl

<?php echo $header; ?><?php echo $column_left; ?> 
<div id="content"> 
<div class="page-header"> 
    <div class="container-fluid"> 
     <div class="pull-right"> 
      <button type="submit" form="form-mymodule" data-toggle="tooltip" title="<?php echo $button_save; ?>" class="btn btn-primary"><i class="fa fa-save"></i></button> 
      <a href="<?php echo $cancel; ?>" data-toggle="tooltip" title="<?php echo $button_cancel; ?>" class="btn btn-default"><i class="fa fa-reply"></i></a> 
     </div> 
     <h1><?php echo $heading_title; ?></h1> 
     <ul class="breadcrumb"> 
      <?php foreach ($breadcrumbs as $breadcrumb) { ?> 
      <li><a href="<?php echo $breadcrumb['href']; ?>"><?php echo $breadcrumb['text']; ?></a></li> 
      <?php } ?> 
     </ul> 
    </div> 
</div> 
<div class="container-fluid"> 
    <?php if ($error_warning) { ?> 
    <div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> <?php echo $error_warning; ?> 
     <button type="button" class="close" data-dismiss="alert">&times;</button> 
    </div> 
    <?php } ?> 
    <div class="panel panel-default"> 
     <div class="panel-heading"> 
      <h3 class="panel-title"><i class="fa fa-pencil"></i> <?php echo $text_edit; ?></h3> 
     </div> 
     <div class="panel-body"> 
      <form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data" id="form-mymodule" class="form-horizontal"> 
       <div class="form-group"> 
        <label class="col-sm-2 control-label" for="input-text-example"><?php echo $entry_text; ?></label> 
        <div class="col-sm-10"> 
         <input type="text" name="text_example" value="<?php echo $text_example; ?>" placeholder="<?php echo $text_example; ?>" id="input-text-example" class="form-control" /> 
        </div> 
       </div> 
      </form> 
     </div> 
    </div> 
</div> 

admin/langua GE/EN-GB /擴展/模塊/ mymodule.php

<?php 
// Heading 
$_['heading_title'] = 'My Module'; 

// Text 
$_['text_extension'] = 'Extensions'; 
$_['text_success']  = 'Success: You have modified My module!'; 
$_['text_edit']  = 'Edit My Module'; 

// Entry 
$_['entry_text']  = 'text'; 

// Error 
$_['error_permission'] = 'Warning: You do not have permission to modify My module!'; 

error.log中=空。

回答

1

問題出在您的命名約定中。您應該在表單中使用modulename_input作爲您的輸入字段。你可以這樣做。

1.更改代碼在你的控制器

if (isset($this->request->post['mymodule_text_example'])) { 
     $data['text_example'] = $this->request->post['mymodule_text_example']; 
    } else { 
     $data['text_example'] = $this->config->get('mymodule_text_example'); 
} 

2.And在相關視圖文件

<input type="text" name="mymodule_text_example" value="<?php echo $text_example; ?>" placeholder="<?php echo $text_example; ?>" id="input-text-example" class="form-control" /> 

希望它會很好地工作。嘗試這個。

0

mymodule.php

if (isset($this->request->post['mymodule_text_example'])) { 
     $data['mymodule_text_example'] = $this->request->post['mymodule_text_example']; 
    } else { 
     $data['mymodule_text_example'] = $this->config->get('mymodule_text_example'); 
    } 

mymodule.tpl

<input type="text" name="mymodule_text_example" value="<?php echo $mymodule_text_example; ?>" placeholder="<?php echo $mymodule_text_example; ?>" id="input-text-example" class="form-control" />