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

Как правильно передавать данные из/в модуль из базы (делаю календарь)

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

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

 

Но сделал это не как модуль, а просто вставил код в темплейт. Теперь хочу сделать модулем и натолкнулся на следующие вопросы:

 

Первый, возможно дурацкий.

 

Сейчас для перехода на год назад и вперед на главной стоит захардкоженая ссылка: <a href="http://studymarket.com.ua/news/calend2.php?year=2014&today=11&month=3">

 

Ajax и Jquery не используются, но вроде при нажатии календарь автоматом апдейтит даты без перегрузки главной страницы (смотреть со страницы http://studymarket.com.ua ). Почему так? :)

 

 

Второй: как сделать правильно так, чтобы при переходе на год назад и вперед брались данные из базы  и не пихать хардкод в какой-то внешний php , которой заливать вместе с модулем, а получать данные как-то правильно через систему модуля/модели.

 

Еще не до конца разобрался, как скажем брать год и месяц из календаря, куда их передавать, в какой скрипт модуля, чтобы тот взял данные из базы и вернул их и заапдейтить сам div календаря с новыми данными. Jquery / Ajax знаю, просто не могу понять механизм передачи данных из базы данных в модули

 

Если что скрипт календаря можно глянуть здесь: http://studymarket.com.ua

 

Спасибо за любую информацию

 

 

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


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

В календаре ссылки должны быть на модуль который генерирует список "статей" в котором должен быть обработчик этих переменных

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


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

говоришь

написал сам

потом

Ajax и Jquery не используются...

а оказывается используются, ибо

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

- - -

кодировку не настроил.

- - -

Второй: как сделать правильно так, чтобы при переходе на год назад и вперед брались данные из базы и не пихать хардкод в какой-то внешний php , которой заливать вместе с модулем, а получать данные как-то правильно через систему модуля/модели.

ниче не понял.

какие данные? в каком формате?

ты распиши подробно - что ты хочешь.

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


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

говоришь

потом

а оказывается используются, ибо

- - -

кодировку не настроил.

- - -

ниче не понял.

какие данные? в каком формате?

ты распиши подробно - что ты хочешь.

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

 

1. Первый вопрос и был задан потому что нет в скрипте ни аякса ни jquery. Код вписан в модуль, модуль включен и вставлен в страницу. Мое мнение что опенкарт как-то переделывает хардкоженые линки модуля так чтобы они грузились в странице, а не делался переход. Возможно через .htaccess . Поэтому и спрашиваю. 

 

2. Основное что мне непонятно: (вопрос к тем, кто писал модули)

 

Сейчас есть так:

 

обычный шаблонный дефолтный модуль

в /template/modul/моймодуль.tpl вписан код, который выдает календарь с днями.

Чтобы перейти на другую дату используется ссылка  http://studymarket.com.ua/news/calend2.php?year=2014&today=11&month=3

то есть используется левый файл, а не так как делается по шаблону, где как-то идет обмен данными между базой данными и модулем

 

мне надо чтобы в выданном модуле календаря на страницу

 

1. При нажатии вперед/назад запускался аяксовый обработчик (это я сделаю)

2. На какой-то файл передавались данные с годом, месяцем и данными (как это сделать по правильному в разработке модуля)

 

    ВОПРОС: куда передавать данные (где по правильному должен лежать этот файл, который по $_GET[] запросу возьмет информацию из базы, обработает и выдаст результат? как я понимаю левые файлы при разработке модулей не приветствуются, все надо делать через     обработчики и модели. Вот с этим я не разобрался поэтому и спрашиваю. Информации как таковой не смог найти для того что мне надо

 

3. Брались данные и этот <div> календаря  с новыми датами в календаре обновлялся (это тоже я сделаю)

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


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

Смотреть сюда:

            $this->children        = array(
                'common/column_left',
                'common/column_right',
                'common/content_top',
                'common/content_bottom',
                'common/footer',
                'common/header'
            );

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


Ссылка на сообщение
Поделиться на другие сайты
var url = 'index.php?route=module/my_module/MyFunction';

$.ajax({
      url: url,
      type: 'GET',
      data: $('.datapicker').datepicker('getDate'),
      dataType: 'json',
      success: function(msg){
         alert(msg['you_callback']);
      }
   }
);

как то так, контроллер же модуля по адресу: catalog/controller/module/my_module.php должен содержать в себе public MyFunction который и будет обрабатывать $_GET параметры (где по правильному должен лежать этот файл, который по $_GET[] запросу возьмет информацию из базы, обработает и выдаст результат?)

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


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

Вроде понял. 

 

Сделал в /catalog/controller/module/myModul.php функцию

 

public function MyFunction() {
       print "test";
return TRUE;
}
 
 
открывается слово test
 
Не могу понять такую проблему. В /catalog/view/theme/bigshop/template/module/myModul.tpl сделал тестовую ссылку
 
   <a id="test">test</a>
 
и делаю jquery запрос

  <script>
 $(function(){
$('#test').click(function(){
    alert('Before load');
 $.get( "http://studymarket.com.ua/index.php?route=module/myModul/MyFunction", function( data ) {
  alert( "Load was performed." );
});
});
  });
</script>
 
И проблема в том, что именно эту ссылку с http://studymarket.com.ua/index.php?route=module/myModul/MyFunction  оно не грузит, (не выдается "Load was performed."), а любую другую, например просто http://studymarket.com.ua грузит. В чем здесь фокус?

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


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

потому что

GET http://studymarket.com.ua/index.php?route=module/myModul/MyFunction 500 (Internal Server Error) 
в консоль иногда посматривай

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


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

решил через .load

$("#test1").load("http://studymarket.com.ua/index.php?route=module/myModul/MyFunction", {parameters: 25}, function(data){
   $("#test1").append(data);
});

Но все равно не понятно почему при .get  получается 500 (Internal Server Error)

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


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

при load то же самое было (тестил из консоли перед тем, как написать про 500).

так ты ошибки поднимай из логов и устраняй - чего гадать зря?

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


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

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

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

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

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

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

Войти

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

Войти

  • Последние посетители   0 пользователей онлайн

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

×

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

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