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

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


Recommended Posts

Здравствуйте.
 
Делаю свой модуль для 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, но две записи для $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)

 

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

 

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

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

 //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
Надіслати
Поділитися на інших сайтах

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

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

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

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

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

Вхід

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

Вхід зараз
×
×
  • Створити...

Important Information

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