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

Повторное использование переменных. Нужна помощь.


Zuveh

Recommended Posts

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

Не могу найти нигде каким образом можно добавить в свой модуль настроек уже существующую переменную ocstore. Допустим, мне нужно (ну не хочется скакать по вложенным веткам настроек) включить переменную (например config_product_count) в свой модуль. Такой код:

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

не работает. Вернее работает только наполовину. Переменная отображается, но её изменение не сохраняется в базе. Подскажите, плиз, что не так делаю?

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


конкретную настройку можно получить так
 

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

сохранить так
 

$this->config->set('config_product_count', $data['config_product_count']);

 

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


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

$this->config->set('config_product_count', $data['config_product_count']);

от стандартно используемой в контроллере

$data['config_product_count'] = $this->request->post['config_product_count'];

?

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


2 часа назад, Zuveh сказал:

Переменная отображается, но её изменение не сохраняется в базе. Подскажите, плиз, что не так делаю?

 

проверяйте шаблон, скорей всего там загвоздка

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

в первом случае - сохранение в базу
во втором случае - получение данных из формы ввода

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


AlexDW, в шаблоне всё стандартно.

                    <div class="col-sm-10">
                      <label class="radio-inline">
                        <?php if ($config_product_count) { ?>
                        <input type="radio" name="config_product_count" value="1" checked="checked" />
                        <?php echo $text_yes; ?>
                        <?php } else { ?>
                        <input type="radio" name="config_product_count" value="1" />
                        <?php echo $text_yes; ?>
                        <?php } ?>
                      </label>
                      <label class="radio-inline">
                        <?php if (!$config_product_count) { ?>
                        <input type="radio" name="config_product_count" value="0" checked="checked" />
                        <?php echo $text_no; ?>
                        <?php } else { ?>
                        <input type="radio" name="config_product_count" value="0" />
                        <?php echo $text_no; ?>
                        <?php } ?>
                      </label>
                    </div>
                  </div>

 

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


за пределы формы - не выносил.

в дампе: ["config_product_count"]=> string(1) "1" 

или

["config_product_count"]=> string(1) "0"

в зависимости от текущего значения переменной. все изменения в форме сохраняются. все, кроме изменений переменной ocstore.

 

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


		if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
			$this->model_setting_setting->editSetting('showcase', $this->request->post);

			$this->session->data['success'] = $this->language->get('text_success');

			$this->response->redirect($this->url->link('extension/module/showcase', 'token=' . $this->session->data['token'] . '&type=module', true));
		}

 

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


$this->model_setting_setting->editSetting('showcase', $this->request->post);

так правильно вы сохраняете только свои настройки

добавьте после этой строки
 

$this->config->set('config_product_count', $this->request->post['config_product_count']);

 

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


в смысле? сохраняются данные переданные из формы. какая разница откуда получено значение, которое содержится в одной из переменных формы, вынуто из базы или инициировано действиями пользователя с помощью предоставленных ему инструментов ?

форма передает массив переменных содержащих новые данные. ВСЕ изменения сохраняются, КРОМЕ тех, которые должны перезаписать одно из значений другого контроллера.

 

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


Уважаемый, зачем вы мне что-то доказываете?
Откройте модель model_setting_setting и посмотрите как работает метод editSetting
все ваши переменные, которые сохраняются имеют в начале showcase_ это ключ ваших настроек
Переменная с названием config_product_count имеет ключ config, поэтому при попытке сохранения под ключом showcase, эта переменная не проходит проверку и отбрасывается

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


1 минуту назад, thentru сказал:

Переменная с названием config_product_count имеет ключ config, поэтому при попытке сохранения под ключом showcase, эта переменная не проходит проверку и отбрасывается

вот и причина

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

52 minutes ago, Zuveh said:

на всякий случай проверил. ничего не изменилось.

 

thentru

Я никому, ничего не доказываю. Я прошу помочь и пытаюсь разобраться с помощью сообщества, с тем, что не смог понять сам. А поскольку я не медведь (наверное к сожалению), мне нужно понимать для чего нужно крутить педали, что бы крутить их осознанно. Если Вас корёжит обсуждение, то будьте добры, либо не участвуйте в помощи, либо, уж если назвались "груздем", то дайте развернутый ответ, что бы было понятно что, куда и зачем, поскольку поучать просто, а УМЕТЬ ОБЪЯСНИТЬ - это талант, что дорогого стоит.

 

А форма обращения "Уважаемый" применима в начале общения. Появление же такой формы в середине процесса общения (переписки), имеет пренебрежительный контекст, тем более, что собеседник НИКОГДА не проявлял лично к Вам никаких негативных эмоций. Более того, её использование БЕЗ дополнительного упоминания имени-отчества/товарищ(господин)-фамилия/коллега/доктор наук и проч., опускает уровень общения на базарно-полицейский сленг.

НЕ СОВЕТ. Мнение. Мои питерские друзья стараются избегать такого общения с незнакомыми людьми, да и вообще с кем бы то ни было, хотя бы потому, что не хотят позорить культурную столицу России.

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


@Zuveh ни в коем случае не хотел вас как-то задеть или обидеть.
Нужна помощь - я дал совет с примером как это работает. Не знал бы - прошел мимо.
А если у вас что-то не получается, значит где-то что-то упущено

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


1 hour ago, Zuveh said:

на всякий случай проверил. ничего не изменилось.

 

Спасибо огромное, но, как я уже писал выше - не изменилось ничего.. не сохраняет именно эту настройку.

 

P.S. Я и не обижался.

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


		if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
			//var_dump($this->request->post);			
			$this->model_setting_setting->editSetting('showcase', $this->request->post);
			$this->config->set('config_product_count', $this->request->post['config_product_count']);

			$this->session->data['success'] = $this->language->get('text_success');

			$this->response->redirect($this->url->link('extension/module/showcase', 'token=' . $this->session->data['token'] . '&type=module', true));
		}

 

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


Странно почему у вас не работает метод
Можно конечно совсем извратиться, чтобы сохранить именно этот конфиг
 

$product_count = array(
  'config_product_count' => (int)$this->request->post['config_product_count']
);
$this->model_setting_setting->editSetting('config', $product_count);

 

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


2 hours ago, AlexDW said:

переименуйте в контроллере и шаблоне config_product_count в showcase_config_product_count

и будет счастье ;)

 

это в общем то бессмысленно, поскольку отрезает саму "системную" переменную, и создает свою с тем же функционалом. хотя, если посмотреть глубже - моя затея - тоже не совсем айс.. :D

 

thentru,

я и сам не могу понять.. она не может быть заблокирована для записи вне родного контроллера ?

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


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

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

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

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

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

Вхід

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

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

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

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

Important Information

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