Я пытаюсь создать модуль. У меня есть язык, контроллер просмотра файлов в модулях админки и категории. Я скопировал административную часть из модуля категории по умолчанию, установка модуля из администратора выглядит нормально, я добавляю ее на свою страницу и не вижу ее на реальной странице.
Что я забыл сделать или проверить?
/catalog/controller/module/product_list.php
<?php
class ControllerModuleProductsList extends Controller {
public function index($setting) {
if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/products_list.tpl')) {
return $this->load->view($this->config->get('config_template') . '/template/module/products_list.tpl' $data);
} else {
return $this->load->view('default/template/error/not_found.tpl', $data);
}
}
}
/catalog/controller/module/products_list.tpl =)
<h1>test</h1>
/admin/controller/module/product_list.php
<?php
class ControllerModuleProductsList extends Controller {
private $error = array();
public function index() {
$this->load->language('module/products_list');
$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('products_list', $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['heading_title'] = $this->language->get('heading_title');
$data['text_edit'] = $this->language->get('text_edit');
$data['text_enabled'] = $this->language->get('text_enabled');
$data['text_disabled'] = $this->language->get('text_disabled');
$data['entry_status'] = $this->language->get('entry_status');
$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'], '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/products_list', 'token=' . $this->session->data['token'], 'SSL')
);
$data['action'] = $this->url->link('module/products_list', 'token=' . $this->session->data['token'], 'SSL');
$data['cancel'] = $this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL');
if (isset($this->request->post['products_list_status'])) {
$data['products_list_status'] = $this->request->post['products_list_status'];
} else {
$data['products_list_status'] = $this->config->get('products_list_status');
}
$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/products_list.tpl', $data));
}
protected function validate() {
if (!$this->user->hasPermission('modify', 'module/products_list')) {
$this->error['warning'] = $this->language->get('error_permission');
}
return !$this->error;
}
}
/admin/controller/module/products_list.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-category" 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">×</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-category" class="form-horizontal">
<div class="form-group">
<label class="col-sm-2 control-label" for="input-status"><?php echo $entry_status; ?></label>
<div class="col-sm-10">
<select name="products_list" id="input-status" class="form-control">
<?php if ($products_list) { ?>
<option value="1" selected="selected"><?php echo $text_enabled; ?></option>
<option value="0"><?php echo $text_disabled; ?></option>
<?php } else { ?>
<option value="1"><?php echo $text_enabled; ?></option>
<option value="0" selected="selected"><?php echo $text_disabled; ?></option>
<?php } ?>
</select>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<?php echo $footer; ?>
Проблема в контроллере модуля администратора при сохранении настроек модуля.
Вы должны сохранить настройки для вашего нового products_list
модуль, но вместо этого (из-за копирования и не уделяя достаточного внимания) вы все равно сохраняете его для category
модуль.
В вашем admin/controller/module/products_list.php
найти эту строку:
$this->model_setting_setting->editSetting('category', $this->request->post);
и изменить category
за products_list
, так что, это
$this->model_setting_setting->editSetting('products_list', $this->request->post);
Дополнительно обратите внимание на этот блок кода в вашем контроллере:
if (isset($this->request->post['category_status'])) {
$data['category_status'] = $this->request->post['category_status'];
} else {
$data['category_status'] = $this->config->get('category_status');
}
и убедитесь, что в вашем файле шаблона (для этого модуля) у вас также есть поле формы с именем category_status
(должен быть <select>
элемент формы для настройки Enabled/Disabled
статус).
Других решений пока нет …