2015-07-27 2 views
0

Я пытаюсь сделать легкую форму в OpenCart 2.0.1.1, которая хранит значения в базе данных.Редактировать значение для базы данных через пользовательский админ, Opencart 2.0

Я сделал специальную страницу администрирования, где у меня будут некоторые расширения, которые я делаю самостоятельно. Это была легкая часть.

Я создал форму и столбец в базе данных, это нормально работает, я получаю значения и отображается в текстовом поле внутри администратора. Но проблема в том, когда я пытаюсь редактировать тексты. Когда я изменяю значение textarea и ударяю, он просто исчезает! и столбец в базе данных пропал.

Мой файл контроллера:

админ/контроллер/EKOMET/design.php

<?phpclass ControllerEkometdesign extends Controller { 
private $error = array(); 

public function index() { 
    $this->load->language('ekomet/design'); 

    $this->document->setTitle($this->language->get('heading_title')); 

    $this->load->model('setting/setting'); 

    if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) { 
     $this->model_setting_setting->editSetting('design_name', $this->request->post); 
     } 

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

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

    $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_stores'), 
     'href' => $this->url->link('ekomet/design', 'token=' . $this->session->data['token'], 'SSL') 
    ); 

    $data['breadcrumbs'][] = array(
     'text' => $this->language->get('heading_title'), 
     'href' => $this->url->link('ekomet/design', 'token=' . $this->session->data['token'], 'SSL') 
    ); 

    if (isset($this->session->data['success'])) { 
     $data['success'] = $this->session->data['success']; 

     unset($this->session->data['success']); 
    } else { 
     $data['success'] = ''; 
    } 

    $data['action'] = $this->url->link('ekomet/design', 'token=' . $this->session->data['token'], 'SSL'); 

    $data['cancel'] = $this->url->link('ekomet/design', 'token=' . $this->session->data['token'], 'SSL'); 

    $data['token'] = $this->session->data['token']; 

    $settings = $this->model_setting_setting->getSetting('design_name'); 

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

    $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('ekomet/design.tpl', $data)); 
} 

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

    if ($this->error && !isset($this->error['warning'])) { 
     $this->error['warning'] = $this->language->get('error_warning'); 
    } 

    return !$this->error; 
}} 

Я посмотрел через контроллер setting.php и я хочу использовать таблицу настройки в моей базе данных для сохраните мои значения (нет необходимости изобретать колесо). Как я сказал выше. Он передает значения из базы данных. Но я не могу его обновить.

Мой файл шаблона:

админ/вид/шаблон/EKOMET/design.tpl

  <div class="form-group required"> 
      <label class="col-sm-2 control-label" for="input-ekomet-name">E-komet namn</label> 
      <div class="col-sm-10"> 
       <input type="text" name="config_ekomet_name" value="<?php echo $config_ekomet_name; ?>" placeholder="<?php echo $entry_ekomet_name; ?>" id="input-ekomet-name" class="form-control" /> 
       <?php if ($error_ekomet_name) { ?> 
       <div class="text-danger"><?php echo $error_ekomet_name; ?></div> 
       <?php } ?> 
      </div> 
      </div> 

Я не сделал свой собственный файл модели, потому что я хочу, чтобы использовать тот, который подключен к установке , Нужно ли мне создавать свою собственную модель для выполнения этой работы?

ответ

2

Вы используете неверный префикс кода и ключевое поле

Убедитесь, если code = abc затем key = abc_def

Заменить

$this->model_setting_setting->editSetting('design_name', $this->request->post); 

С

$this->model_setting_setting->editSetting('config', $this->request->post); 

Так что это будет code = config и key = config_ekomet_name

+0

Привет, друг, спасибо за ваш быстрый ответ, я попытался сделать то, что вы сказали. Когда я попытался сделать это с предопределенным столбцом в базе данных, он работал хорошо, как раньше, но как только я сохранил и изменил значение, он удалил все мои «конфигурационные» ключи в таблице параметров, и я получил сообщение об ошибке в admin: (Warning: fopen (/ home/u/u6144172/www/system/logs /): не удалось открыть поток: находится ли каталог в /home/u/u6144172/www/system/library/log.php в строке 6). Я также пробовал без предопределенной колонки, такой же результат. Вы знаете, что мне не хватает? –

+0

Можно сказать, что это сработало как очарование для моей колонки, но оно удалило все остальные столбцы конфигурации hehe. –

+0

Прошу прощения (я сейчас чувствую себя глупо). Я просто переименовал ключ кода + в другое, и теперь он отлично работает, спасибо за помощь! –

Смежные вопросы