Доброго времени суток.
Есть задача:
Необходимо настроить в админ панели выбор картинки для слайдера. Слайдер - отдельный модуль.
Код контроллера admin/controller/module/slider.php:
<?php
class ControllerModuleSlider extends Controller {
private $error = array(); // используется для установки ошибки, если такая возникла
public function index() {
$this->load->language('module/slider'); //подключаем языковой файл
$this->document->setTitle($this->language->get('heading_title'));
$this->load->model('setting/setting'); //подключаем модель setting, он позволяет сохранять настройки модуля в БД
if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) { // если мы нажали "Сохранить" в панели, мы сохраняем текущие настройки
$this->model_setting_setting->editSetting('slider', $this->request->post); // анализ и передача данных в Setting Model для сохранения в базе данных
$this->response->redirect($this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL')); // редирект в Module Listing
}
// объявление переменных
// формирование breadcrumbs
// обработка ошибок из validate()
// статус модуля
// обработка текстовых полей
// тут работа с изображением (пока что пробую сделать это с одним изображением)
$this->load->model('tool/image');
if (isset($this->request->post['config_image1'])) {
$data['config_image1'] = $this->request->post['config_image1'];
} else {
$data['config_image1'] = $this->config->get('config_image1');
}
if (isset($this->request->post['config_image1']) && is_file(DIR_IMAGE . $this->request->post['config_image1'])) {
$data['thumb1'] = $this->model_tool_image->resize($this->request->post['config_image1'], 100, 100);
} elseif ($this->config->get('config_image1') && is_file(DIR_IMAGE . $this->config->get('config_image1'))) {
$data['thumb1'] = $this->model_tool_image->resize($this->config->get('config_image1'), 100, 100);
} else {
$data['thumb1'] = $this->model_tool_image->resize('no_image.png', 100, 100);
}
$data['placeholder'] = $this->model_tool_image->resize('no_image.png', 100, 100);
// далее завершающая часть (setOutput )
}
protected function validate() {
// проверка прав доступа пользователя для работы с модулем
if (!$this->user->hasPermission('modify', 'module/category')) {
$this->error['warning'] = $this->language->get('error_permission');
}
// проверка заданы ли текстовые поля
if (!$this->request->post['config_image1']) {
$this->error['code'] = $this->language->get('error_code');
}
return !$this->error;
}
}
Кусок кода представления admin/view/template/module/slider.tpl:
<div class="form-group">
<label class="col-sm-2 control-label" for="input-image"><?php echo $entry_image; ?></label>
<div class="col-sm-10"><a href="" id="thumb-image" data-toggle="image" class="img-thumbnail"><img src="<?php echo $thumb1; ?>" alt="" title="" data-placeholder="<?php echo $placeholder; ?>" /></a>
<input type="hidden" name="config_image1" value="<?php echo $config_image1; ?>" id="input-image" />
</div>
</div>
Кусок кода catalog/controller/module/slider.php:
<?php
class ControllerModuleSlider extends Controller {
public function index() {
$this->load->language('module/slider'); //подключаем любой языковой файл
$data['heading_title'] = $this->language->get('heading_title'); //объявляем переменную heading_title с данными из языкового файла
$data['slider_slide1_span'] = $this->config->get('slider_slide1_span');
$data['slider_slide2_span'] = $this->config->get('slider_slide2_span');
$data['slider_slide3_span'] = $this->config->get('slider_slide3_span');
$data['slider_slide4_span'] = $this->config->get('slider_slide4_span');
$data['slider_slide1_bold'] = $this->config->get('slider_slide1_bold');
$data['slider_slide2_bold'] = $this->config->get('slider_slide2_bold');
$data['slider_slide3_bold'] = $this->config->get('slider_slide3_bold');
$data['slider_slide4_bold'] = $this->config->get('slider_slide4_bold');
$data['config_image1'] = $this->config->get('config_image1');
//стандартная процедура для контроллеров OpenCart, выбираем файл представления модуля для вывода данных
if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/slider.tpl')) {
return $this->load->view($this->config->get('config_template') . '/template/module/slider.tpl', $data);
}
}
}?>
Кусок кода catalog/view/template/module/slider.tpl:
<div class="main_title slide" >
<img src="<?php echo $config_image1; ?>" alt="<?php echo $slider_slide1_span . ' ' . $slider_slide1_bold; ?>">
<div class="container--small">
<div class="title_text">
<span><?php echo $slider_slide1_span; ?></span>
<h1><?php echo $slider_slide1_bold; ?></h1>
</div>
</div>
</div>
Проблема в том, что в представление catalog/view/module/slider.tpl $config_image1 передаётся как (unknown). Есть мысли, что это из-за модификации имён переменных, т.к. они участвуют в AJAX запросах.
Подскажите, пожалуйста, почему приходит (unknown)?
Не использую модель, т. к. с текстовыми полями это работает и по аналогии (из setting.php) пытаюсь сделать с картинкой.