Перейти к содержанию
dexteron

[Решено] Обработка post запроса в контроллере модуля

Рекомендуемые сообщения

Здравствуйте.
 
Делаю свой модуль для oc, этой мой первый модуль и у меня возникли некоторые сложности.
В общем суть в чем... Пытаюсь получить данные в массив $my_contact_gallery (файл контроллера модуля):

$this->data['my_contact_gallery'] = array();
if (isset($this->request->post['my_contact_gallery'])) {
  $contact_gallery = array();
  $contact_gallery = $this->request->post['my_contact_gallery'];

  $this->log->resetDebug();
  $this->log->debug('$contact_gallery:', $contact_gallery);

  $i = 1;
  foreach ($contact_gallery as $gallery) {
    if ($gallery['img'] && file_exists(DIR_IMAGE . $gallery['img'])) {
      $img = $gallery['img'];
      $thumb = $this->model_tool_image->resize($gallery['img'], 220, 130);
    } else {
      $img = 'no_image.jpg';
      $thumb = '220x130.png';
    }

    $this->data['my_contact_gallery'][$i] = array(
      'show'    => $gallery['show'],
      'img' 	=> $gallery['img'],
      'thumb'   => $thumb,
      'desc'    => $gallery['desc'],
      'test'    => 'test'
    );

    $i++;
  }	      
			
  $this->log->debug('$my_contact_gallery:', $this->data['my_contact_gallery']);

} elseif ($this->config->get('my_contact_gallery')) {
    $this->data['my_contact_gallery'] = $this->config->get('my_contact_gallery');
}  


 
Так же подключил дебаггер для проверки: Результат после сохранения модуля дебаггер показал такой:
 

2016-02-10 13:15:58 - $contact_gallery:
2016-02-10 13:15:58 - Array
(
    [1] => Array
        (
            [show] => 1
            [img] => data/000030_dash_main.png
            [desc] => Array
                (
                    [1] => 456
                )

        )

)

2016-02-10 13:15:58 - $my_contact_gallery:
2016-02-10 13:15:58 - Array
(
    [1] => Array
        (
            [show] => 1
            [img] => data/000030_dash_main.png
            [thumb] => http://test-for-me.ru/image/cache/data/000030_dash_main-220x130.png
            [desc] => Array
                (
                    [1] => 456
                )

            [test] => test
        )

)

 

Захожу в админку в модуль и вывожу $my_contact_gallery через print_r.

Мне выдает массив из $contact_gallery, а не из $my_contact_gallery (смотрите результаты дебаггера выше).

Я не понимаю почему так происходит. Возможно я просто чего-то не знаю либо что-то упустил.

 

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

 

Да, чуть не забыл, OC 1.5.6.x

:-)

Изменено пользователем dexteron

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
$contact_gallery = array();
$MY_contact_gallery = $this->request->post['my_contact_gallery'];

$this->log->resetDebug();
$this->log->debug('$MY_contact_gallery:', $MY_contact_gallery);

$i = 1;
foreach ($MY_contact_gallery as $gallery) {

Не?

Поделиться сообщением


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

Не?

Нет, изменил на my_contact_gallery. Почистил базу сохранил модуль, ничего не поменялось. 

Поделиться сообщением


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

Не может быть, чтобы "ничего не поменялось".

 

Как минимум в логе дебаггера не должно быть записи для $contact_gallery, но две записи для $my_contact_gallery.

 

Расставьте несколько echo() и убедитесь, что смотрите не кешированный вариант

Поделиться сообщением


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

Как минимум в логе дебаггера не должно быть записи для $contact_gallery, но две записи для $my_contact_gallery.

 

Извините, это да, поменялось. Я имел в виду что проблему это не решило. 

 

Почистил базу, сохранил модуль. Дебаггер показал:

 

2016-02-10 17:15:29 - $my_contact_gallery:
2016-02-10 17:15:29 - Array
(
    [1] => Array
        (
            [show] => 1
            [img] => data/00206491_n2.jpg
            [desc] => Array
                (
                    [1] => ыва
                )

        )

    [2] => Array
        (
            [show] => 1
            [img] => 
            [desc] => Array
                (
                    [1] => 
                )

        )

)

2016-02-10 17:15:29 - $my_contact_gallery:
2016-02-10 17:15:29 - Array
(
    [1] => Array
        (
            [show] => 1
            [img] => data/00206491_n2.jpg
            [thumb] => http://test-for-me.ru/image/cache/data/00206491_n2-220x130.jpg
            [desc] => Array
                (
                    [1] => ыва
                )

            [test] => test
        )

    [2] => Array
        (
            [show] => 1
            [img] => 
            [thumb] => 220x130.png
            [desc] => Array
                (
                    [1] => 
                )

            [test] => test
        )

)

 

Я не пойму, почему оно не сохраняет в итоге в $my_contact_gallery, новые значения. Ведь должно по идее?) 

 

    $this->data['my_contact_gallery'][$i] = array(
      'show'    => $gallery['show'],
      'img' 	=> $gallery['img'],
      'thumb'   => $thumb,
      'desc'    => $gallery['desc'],
      'test'    => 'test'
    );
Изменено пользователем dexteron

Поделиться сообщением


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

Сейчас попробовал вообще убрать все, поставил вот так:
 


if (isset($this->request->post['my_contact_gallery'])) {
   $this->data['my_contact_gallery'] = "test";
} elseif ($this->config->get('my_contact_gallery')) {
   $this->data['my_contact_gallery'] = $this->config->get('my_contact_gallery');
}


 
В настройках модуля print_r($my_contact_gallery), так оно все равно выводит те данные, которые я внес в админке в модуле. Базу перед этим чистил. 
 

Array
(
    [1] => Array
        (
            [show] => 1
            [img] => 
            [desc] => Array
                (
                    [1] => sdfsfdsf
                )

        )

    [2] => Array
        (
            [show] => 1
            [img] => 
            [desc] => Array
                (
                    [1] => fsf
                )

        )

) 

 

Может я что-то не так делаю или не понимаю очевидных вещей :)

Поделиться сообщением


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

Покажите полное имя и ВЕСЬ код файла, в котором используется строка 

 

print_r($my_contact_gallery)

 

Есть подозрение, что класс модуля назван неправильно

Поделиться сообщением


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

Покажите полное имя и ВЕСЬ код файла, в котором используется строка 

 

print_r($my_contact_gallery)

 

Есть подозрение, что класс модуля назван неправильно

 

Проблема решилась. Мне помогли. Оказалось ошибка была в том, что я не сохранил данные после всех манипуляций.

Рабочий вариант:

 //mini-gallery
 $this->data['my_contact_gallery'] = array();
 if (isset($this->request->post['my_contact_gallery'])) {
  
  $my_contact_gallery = array();
  $my_contact_gallery = $this->request->post['my_contact_gallery'];

  $i = 1;
  foreach ($my_contact_gallery as &$gallery) {
   if ($gallery['img'] && file_exists(DIR_IMAGE . $gallery['img'])) {
     $img = $gallery['img'];
     $thumb = $this->model_tool_image->resize($gallery['img'], 220, 130);
   } else {
     $img = 'no_image.jpg';
     $thumb = '220x130.png';
   }

   $this->data['my_contact_gallery'][$i] = array(
     'show'    => $gallery['show'],
     'img'     => $img,
     'thumb'   => $thumb,
     'desc'    => $gallery['desc']
   );

   $i++;
 }	  
  $this->request->post['my_contact_gallery'] = $this->data['my_contact_gallery'];

 } elseif ($this->config->get('my_contact_gallery')) {
   $this->data['my_contact_gallery'] = $this->config->get('my_contact_gallery');
 }   	

Строка, которую надо было добавить:

$this->request->post['my_contact_gallery'] = $this->data['my_contact_gallery']; 
Изменено пользователем dexteron

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От fanatic
      500.00 руб
      Скачать/Купить дополнение


      Сопутствующие товары
      Модуль, выводит сопутствующие товары из выбранных категорий.
      Принцип работы:
      выбираем  главную категорию, привязываем к ней сопутствующие. 
      для каждой категории, можно задать количество выводимых товаров.
      товары, выбираются рандомно.  так же можно привязать отдельные товары.
       
      Настройки:
      Вывод   - товары из категорий, отдельные товары или и то и другое вместе.
      Вид  -  плитка или слайдер
      настройка слайдера
      настойка полей для вывода
      выводить или нет заголовок
      размеры изображений
       
      модуль выводит
      товары из привязанных категорий(количество задается в админке, выбор рандом)
      определенные товары(выбираются в админке)
      товары из категорий + произвольные товары
      категории
       
      настроили связи
      создали модуль
      добавили модуль в макет
      готово.
       
      Установка ; 
      Загрузить архив через установщик дополнений.
      Система -> Пользователи  -> Группы пользователей    даем права на просмотр и редактирование
       
      Для вывода в корзине и в карточке товара(в табе),  в дополнениях смотрите модуль "Товары из сопутствующих категорий в корзине и карточке товара"
       
      Для корректной работы модуля, нужен  SeoPro   SeoPro
       
      Без проблем работает на дефолнтом шаблоне.
      C другими, может потребоваться адаптация.
       
      для  2.3     файл    assosiated_category_now_catr_and_card_product_2.3.ocmod.zip
      для  2.1 и 2.2   файл    associated_category_2.x.ocmod.zip
       
      Тестировалось на   OpenCart ,  OcStore  2.1 | 2.2 | 2.3
      Демо:
      страница товара(в табе и блок внизу)
       
      страница категории
      Админка       login   demo  pass  demo
      Добавил fanatic Добавлено 01.03.2018 Категория Модули Системные требования SeoPro Сайт разработчика Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 2.3
      2.2
      2.1 ocStore 2.3
      2.2
      2.1 OpenCart.Pro, ocShop  
    • От Aky
      Как передать POST параметр через ajax в файл controller модуля OpenCart ?
       
      Есть модуль "latest"  Файл контроллера latest.php, нужно передать туда параметр width через Ajax/Jquery  
       
      Как обратится к этому файлу? 
       
      Как работать с Ajax знаю, как параметры передать знаю, как принять знаю, но как обратится к нужному файлу в OpenCart?
       
      При попытках обращения по "url:' скрипт выдает ошибку  "404 (not found)"
       
      Пробовал вот так:
      url: 'index.php?route=extension/module/latest',  url: 'index.php?route=module/latest',  url: '/catalog/controller/extension/module/latest',   
      Если перейти на прямую по ссылки: "/catalog/controller/extension/module/latest.php"  выдает ошибку HTTP ERROR 500
    • От fanatic
      Модуль, выводит сопутствующие товары из выбранных категорий.
      Принцип работы:
      выбираем  главную категорию, привязываем к ней сопутствующие. 
      для каждой категории, можно задать количество выводимых товаров.
      товары, выбираются рандомно.  так же можно привязать отдельные товары.
       
      Настройки:
      Вывод   - товары из категорий, отдельные товары или и то и другое вместе.
      Вид  -  плитка или слайдер
      настройка слайдера
      настойка полей для вывода
      выводить или нет заголовок
      размеры изображений
       
      модуль выводит
      товары из привязанных категорий(количество задается в админке, выбор рандом)
      определенные товары(выбираются в админке)
      товары из категорий + произвольные товары
      категории
       
      настроили связи
      создали модуль
      добавили модуль в макет
      готово.
       
      Установка ; 
      Загрузить архив через установщик дополнений.
      Система -> Пользователи  -> Группы пользователей    даем права на просмотр и редактирование
       
      Для вывода в корзине и в карточке товара(в табе),  в дополнениях смотрите модуль "Товары из сопутствующих категорий в корзине и карточке товара"
       
      Для корректной работы модуля, нужен  SeoPro   SeoPro
       
      Без проблем работает на дефолнтом шаблоне.
      C другими, может потребоваться адаптация.
       
      для  2.3     файл    assosiated_category_now_catr_and_card_product_2.3.ocmod.zip
      для  2.1 и 2.2   файл    associated_category_2.x.ocmod.zip
       
      Тестировалось на   OpenCart ,  OcStore  2.1 | 2.2 | 2.3
      Демо:
      страница товара(в табе и блок внизу)
       
      страница категории
      Админка       login   demo  pass  demo
    • От ilznak1001
      Есть сайт производителя продукта, на opencart 2.0.3.1 . Продукты производителя публикуются на сайтах партнеров, у всех ценники разные. На данный момент, ценники партнеров на сайте Производителя выставляются вручную, необходимо интегрировать, чтобы при смене ценника у партнеров, на сайте производителя автоматом подгружался ценник продукта партнеров.
    • От ceskf
      1 000.00 руб
      Скачать/Купить дополнение


      SEO Метки(Теги)
      Метки это еще один способ группировки товаров в opencart. Модуль расширяет семантическое ядро и увеличивает количевство посадочных страниц.
      Будет полезен для продвижения сайта.
      В Opencart есть стандартный механизм меток, но как продвигать эти страницы меток, ведь им нельзя выставить мета теги, урл и т.д.
      Данный модуль дает возможность создавать метки как полноценную страницу со свои урлом, а также:
      - Описания (вверху и внизу) настраиваемые
      - мета теги(title, description,keywords)
      - Тег н1, можно изменять прямо на странице тегов, это не будет стандартный тег который равняеться названию метки
      Данный модуль полностью заменяет стандартный механизм меток.
      Разрабатывался данный модуль по причине того, что когда я сделал на один магазин клиенту такой функционал, клиент захотил еще на 7 магазинов аналогичный модуль.
      Модуль разработан под стагдартный шаблон OpenCart. Для остальных шаблонов необходима работа верстальщика для подстройки.
      Также работает с SeoUrl и SeoPro.
      Не заменяет никаких файлов.
      ДEMO
      http://opencart.kev-group.com.ua/
      http://opencart.kev-group.com.ua/admin/
      demo
      demo
      Возможности и характеристики:
      - страницы меток в sitemap.xml
      - Назначение категории для меток с возможностью вывода меток на категории
      - Количество товаров для каждой метки(опционально)
      - Похожие метки(вывод на странице аналогичных меток присвоенных в админ панели)
      - Один урл для одной метки
      МОДУЛЬ НЕ РАБОТАЕТ С ФИЛЬТРАМИ
       
      Добавил ceskf Добавлено 20.07.2015 Категория SEO, карта сайта, оптимизация Системные требования Сайт разработчика Старая цена 1100 Метод активации Без активации Ioncube Loader Нет OpenCart 2.3
      2.2
      2.1
      2.0
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6 ocStore 2.3
      2.2
      2.1
      1.5.5.1.2
      1.5.5.1.1
      1.5.5.1 OpenCart.Pro, ocShop Opencart.pro 2.3  
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

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

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