Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[Решено] Новый модуль


Recommended Posts

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

 

Делаю модуль блоков для OP2

 

Структура такая:

 

1. Картинка  || 2. Заголовок || 3. Текст || 4. Ссылка || 5. Сортировка 

 

Соответствен создал таблицу в БД

 

box_img_id  int(3)

box_id int(3)

link varchar(255)

image varchar(255)

title varchar(255)

description varchar(255)

sort int(3)

 

 

Сам ступор у меня с моделями и передачей в  БД  в какой папке писать модель для модуля 

Змінено користувачем ArtenPitov
Надіслати
Поділитися на інших сайтах

В модулях используется коробочная модель extension/module. Смотрите модуль HTML, он маленький и там все понятно. 

Змінено користувачем halfhope
Надіслати
Поділитися на інших сайтах

В модулях используется коробочная модель extension/module. Смотрите модуль HTML, он маленький и там все понятно. 

Если я правильно понял, тогда логика такая =>

 

Добавляем свою модель =>  admin\model\extension\my_box.php 

Потом подключаем в контроллере => $this->load->model('extension/my_box'); 

 

Ну и оставляем сами действия с модулем 

$this->load->model('extension/module');

		if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
			if (!isset($this->request->get['module_id'])) {
				$this->model_extension_module->addModule('html', $this->request->post);
			} else {
				$this->model_extension_module->editModule($this->request->get['module_id'], $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'));
		}

Строго не судите я только учусь )

Надіслати
Поділитися на інших сайтах

Буду очень признательный

Надіслати
Поділитися на інших сайтах

UPD Боже мой, походу я так давно не спал. Вы все правильно подумали и правильно сделали с model/module/my_box.php. Я же как-то пропустил мимо глаз весь текст . Подумал, что нужно создать обычный модуль OpenCart, для которого не используется модель. Ну раз уж я написал я отправлю:

 

В OpenCart (в админке) у модуля есть всего 2 файла - файл контроллера и файл шаблона причем создание и редактирование происходит тоже с помощью них.

 

Контроллер как мы уже знаем, обрабатывает инфу из моделей и передает/выводит в шаблон. Контроллер модуля админки должен:

  1. сохранить настройки 
  2. получить данные для модуля, чтобы потом передать их в view (при редактировании)
  3. сгенерировать данные "по умолчанию" (при создании нового модуля)

Все это делается в одной функции index используя встроенные модели.

 

1. Для сохранения данных используется вот такой стандартный код (на примере модуля my_box):

if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
	if (!isset($this->request->get['module_id'])) {
		$this->model_extension_module->addModule('my_box', $this->request->post);
	} else {
		$this->model_extension_module->editModule($this->request->get['module_id'], $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'));
} 

При отправке формы на этот же адрес он создаст новый модуль или отредактирует существующий, если передан module_id

 

2, 3. Получение данных модуля(редактирование) и установка данных "по умолчанию", если данные модуля не были получены(создание нового).

 

Создание нового модуля и редактирование отличается лишь тем, что в при редактировании в адресной строке передается module_id. Если module_id объявлен, то идет получение данных модуля с этим module_id. И в шаблон передаются данные модуля для формы. Если не объявлен, то ставим данные по умолчанию вместо данных модуля. Это все можно сделать вот так:

// Проверка module_id и получение данных модуля
if (isset($this->request->get['module_id']) && ($this->request->server['REQUEST_METHOD'] != 'POST')) {
	$module_info = $this->model_extension_module->getModule($this->request->get['module_id']);
}

// Проверка данных для кадого поля формы 
if (isset($this->request->post['name'])) {
	$data['name'] = $this->request->post['name']; //В случае ошибки (если они у вас обрабатываются в функции validate) ставим в форму данные, которые отправили, чтобы их не потерять
} elseif (!empty($module_info)) {
	$data['name'] = $module_info['name']; //Если данные модуля получены, то ставим их
} else {
	$data['name'] = ''; //Если не получены, то ставим данные по умолчанию
}

Надеюсь понятно объяснил.

 

Создайте модель model/module/my_box.php, обычно туда все модели для модулей кладем. Потом можно будет загрузить:

$this->load->model('module/my_box');
Змінено користувачем halfhope
  • +1 1
Надіслати
Поділитися на інших сайтах

Спасибо) да знакомое чувство работать до утра)

Надіслати
Поділитися на інших сайтах

  • 2 weeks later...

так и хочется сказать:

- чувак, расчехлись, собери мыслишки и СКЛЕПАЙ ОДНУ ТЕМУ по проблемам в процессе разработки своего модуля, вместо тысячи отдельных с невнятными вопросами по выдернутому из контекста коду.

Надіслати
Поділитися на інших сайтах

Все-все )) я уже все сам )) не буду создавать больше дурацких тем, просто познаю что куда и какие переменные, функции откуда ))

Надіслати
Поділитися на інших сайтах

Гість
Ця тема закрита для публікації повідомлень.
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.