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

Нужна помощь в создании управления страницы


Recommended Posts

Всем привет! Создала свою страницу на Опенкарт 2.3. Принцип такой: как только в неё захожу в админке сразу открывается редактирование - необходимо, чтобы при редактировании сохранялись данные в базу, а при открытии отображались ранее введенные данные. Написала всё сама: 2 контроллера, 2 файла модели, 2 представления, 2 языковых файла. Я начинающий программист, за основу взяла файлы setting - не знаю насколько это правильно.Прикрепила файл контроллера и модели админки. Сейчас данные записываются в базу, но на странице инпуты после сохранения пустые. Подскажите что не так

model-pageorder.php controller-pageorder.php

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


Проблема вот в такой конструкции:

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

Если это POST запрос - все ок, берется из $_POST, а вот чтение не работает, потому что $this->config->get работает только с таблицей setting.
Нужно. наверное, сделать что-то типа такого:

if ($this->request->server['REQUEST_METHOD'] != 'POST') {
	$my_config = $this->model_catalog_pageorder->getPageorder('config');
}

// и из него брать при чтении:

if (isset($this->request->post['config_up_page_color_button'])) {
	$data['config_up_page_color_button'] = $this->request->post['config_up_page_color_button'];
} else {
	$data['config_up_page_color_button'] = $my_config['up_page_color_button'];
}

Ну надеюсь, идею поняли)

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

и еще, раз уж пишете свои кастомные страницы, вот эти простыни не делайте:

 

1485155946_Screenshot_2021-02-26.png.dfc7e8a3663224d5c0ac408bbbf91425.png

 

Вместо всего этого безобразия, которое придумали создатели опенкарта, напишите просто:

$data['lang_data'] = $this->language->all();

И в view просто берите все ваши языковые переменные из этого массива $lang_data

кучу времени сэкономите..

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

16 часов назад, Prooksius сказал:

Проблема вот в такой конструкции:


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

Если это POST запрос - все ок, берется из $_POST, а вот чтение не работает, потому что $this->config->get работает только с таблицей setting.
Нужно. наверное, сделать что-то типа такого:


if ($this->request->server['REQUEST_METHOD'] != 'POST') {
	$my_config = $this->model_catalog_pageorder->getPageorder('config');
}

// и из него брать при чтении:

if (isset($this->request->post['config_up_page_color_button'])) {
	$data['config_up_page_color_button'] = $this->request->post['config_up_page_color_button'];
} else {
	$data['config_up_page_color_button'] = $my_config['up_page_color_button'];
}

Ну надеюсь, идею поняли)

Добрый день! Вроде поняла, попробовала, но не получилось( Приложила скрины где что поменяла, все так вы имели ввиду?

108be7w[1] 108bgs1[1]

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


Я имел в виду, что все конструкции типа

$this->config->get('config_############');

надо поменять на

 $my_config['###############'];

Вам нужно понять, что такое $this->config->get и что оно делает. Это обращение к кофигурации опенкарта, а вам нужно прочитать ваши сохраненные данные. Конфигурация опенкарта к вашим сохраненным данным не имеет отношения.

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

В 27.02.2021 в 21:11, Prooksius сказал:

Я имел в виду, что все конструкции типа


$this->config->get('config_############');

надо поменять на


 $my_config['###############'];

Вам нужно понять, что такое $this->config->get и что оно делает. Это обращение к кофигурации опенкарта, а вам нужно прочитать ваши сохраненные данные. Конфигурация опенкарта к вашим сохраненным данным не имеет отношения.

Здравствуйте! Большое вам спасибо - это я все победила. Сейчас естественно у меня таблица и файл модели остались по аналогии setting. Теперь другая проблема: на сайте два языка, в контроллер то я язык добавила, создала в своей таблице в базе колонку language_id, но никак не могу разобраться во-первых как сделать строчек в базе в два раза больше с разным language_id, а во-вторых дописать язык в модель при выборке и изменении. В файле представления я уже прописала язык, на странице редактирования в админке у меня появились вкладки с языками, но данные естественно сохраняются криво. При изменении данных через админку у меня перезаписывается print_id, так как стоит AUTO_INCREMENT не совсем понимаю нужно ли это. 

Screenshot.png

Screenshot2.png

model_pageorder.php

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


В 05.03.2021 в 11:01, Kisula150 сказал:

создала в своей таблице в базе колонку language_id

зачем

храните массив

$config_up_page_text_button['language_id']['text'] 

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

а зачем вообще своя модель(аналогичная setting)  своя таблица(аналогичная setting)?

сохранять свои настройки в родную таблицу setting  -  не?

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

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

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

Important Information

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