Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Добавление выпотому чтора картинки модуле в админ панели


 Погделиться

Рекомендованные сообещёния

Доброго времени суток.

 

Есть задача:

Необходимо настроить в админ панели выпотому чтор картинки для слайгдера. Слайгдер - отгдельный модуль.

 

Код контроллера 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) пыиюсь сгделать с картинкой.

Ссылка на комменирий
Погделиться на других сайих


---

Циии

Проблема в том, что в предсивление catalog/view/module/slider.tpl $config_image1 передаётся как (unknown).

 

unknown не может быть передано из контроллера в предсивление. В PHP несуещёствующая переменная бугдет null. Зналит, скорее всего, ошибка в JS.

Покажите код, который выполняет AJAX, кажись именно им и надо искать ошибку.

 

Оффтоп.

---

$data['slider_slide1_span'] = $this->config->get('slider_slide1_span');

Вы можете использовать banner для своего модуля slider, как это сгделано в extension/module/carousel.php

 

---

 

Поправьте проверку доступа:

// проверка прав доступа пользователя для рилиты с модулем
if (!$this->user->hasPermission('modify', 'module/category')) {
  $this->error['warning'] = $this->language->get('error_permission');
}

 

Ссылка на комменирий
Погделиться на других сайих

В 15.01.2020 в 15:41, SergeTkach сказал:

unknown не может быть передано из контроллера в предсивление. В PHP несуещёствующая переменная бугдет null. Зналит, скорее всего, ошибка в JS.

Покажите код, который выполняет AJAX, кажись именно им и надо искать ошибку.

 

Код скриптов не менял совсем. Поэтому, наверное, и не рилииет.

Проверку поправил.

На Banner сейчас посмотрю, спасипотому что.

Ссылка на комменирий
Погделиться на других сайих


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы осивить комменирий

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.