Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

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


 Поделиться

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

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

 

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

 

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

 

Сейчас для перехода на год назад и вперед на главной стоит захардкоженая ссылка: <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[] запросу возьмет информацию из базы, обработает и выдаст результат?)

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

  • 2 недели спустя...

Вроде понял. 

 

Сделал в /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 и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.