Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 28 Ответов
  • 1604 Просмотров
*

tm2010

  • Захожу иногда
  • 76
  • 0 / 0
Не ругайте строго, в php и веб программировании слаб
имею view в котором по тулбару делаю кнопку задача которой связатся по Google API с календарем Google и загрузить события для отмеченного мышкой во view cid

cid в $REQUEST вижу, есть, то есть есть возможность поднять из базы этот рекорд, чтобы взять данные для доступа к календарю

(CALENDAR_ID в данном случае). 
Но ведь я в этом view (а это FORM) имею, или могу иметь этот CALENDAR_ID от предыдущего чтения GetListQuery сделав его невидимым поскольку он длинный  и неинформативный.
Для меня абсолютно неясен вопрос возможно ли это поле ( в строке выделенной мышкой) передать как то по кнопке, так чтобы оно появилось в переменной $REQUEST в модели скажем другого контроллера, или я слишком многого хочу от Joomla ?
Вся затея - чтобы повторно не читать базу данных по cid записи, или не маятся дурью и просто сделать select по cid?


*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
Запишите в сессию или используйте состояние модели, что в общем-то одно и то же.
*

tm2010

  • Захожу иногда
  • 76
  • 0 / 0
Запишите в сессию или используйте состояние модели, что в общем-то одно и то же.
Подскажите где копать? Судя по всему JRequest::Setvar, но как это сделать по кнопке, если на кнопке на js стоит сразу submit контроллер и task,  а в контроллере этих данных уже наверное нет.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
JModel::setState(), JSession::set(). Ну или $_SESSION, если она вам больше нравится.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
тут насколько я понял вопрос в другом.
ТС, вам надо в форме помимо input name="cid[]" сделать еще один input hidden name="calendar_id[]", в котором как раз передавать нужный CALENDAR_ID. и тогда зная какой cid (какой элемент в массиве), вы сможете получить такой же ключ, но массива calendar_id.
возможно, сумбурно, но надеюсь поняли. в общем надо в форме передавать calendar_id тоже.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

tm2010

  • Захожу иногда
  • 76
  • 0 / 0
Да, именно это,  единственное я не нашел или плохо искал как cid передается по кнопке, с тем чтобы сделать аналогично.
Поищу
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
а что там искать? чекбокс имеет name=cid[]. передается массив cid, поскольку это чекбокс, то передаются только отмеченные. никакой абсолютно магии, обыкновенная форма. в чем сложность?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
По-моему, ТС озадачил принцип работы кнопок на toolbar: эти кнопки одновременно передают параметр task и отправляют форму, как будто там были <input name="task" value="значение_кнопки"/><input type="submit"/>.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
как будто там были <input name="task" value="значение_кнопки"/><input type="submit"/>.
а ведь по сути так и есть :) Joomla.submitbutton так ведь и делает, пишет в task значение, и отправляет форму.

ТС, так в чем именно проблема?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

tm2010

  • Захожу иногда
  • 76
  • 0 / 0
в отсутствии опыта работы с php, формами и тд
Как вы поражаетесь, как этого можно не знать, так я поражен, как вы это делаете ), и откуда вам это все известно

я поставил в view <input type="hidden" name = "calendar_id[]" value='<?php echo $row->Google_id; ?>'>
и о чудо, массив передался
Наверное последний вопрос в этой теме, можно ли передавать только те элементы массива которые соответствуют выбраным чекбоксам, или это грошовая экономия ?

>
>По-моему, ТС озадачил принцип работы кнопок на toolbar: эти кнопки одновременно передают параметр task и отправляют форму, как будто там были <input name="task" value="значение_кнопки"/><input type="submit"/>.

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

*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Да это тоже чудо чудное, полагал что только одна или какие-то избранные кнопки могут делать POST с передачей введенных данных
Базовых знаний маловато, но усваиваются они только когда пробуешь это все сделать ручками.
Ну все когда с этого начинали. Нужно просто сделать мини расследвование  ^-^

Например, вот как выглядит HTML стандартной кнопки "Опубликовать":
Код: html4strict
<button class="btn btn-small" onclick="if (document.adminForm.boxchecked.value==0){alert('Пожалуйста, выберите объект из списка');}else{ Joomla.submitbutton('articles.publish')}">
<span class="icon-publish"></span>
Опубликовать
</button>

При клике вызывается Joomla.submitbutton('articles.publish') - контроллер articles и задача (task) publish.

Смотрим /media/system/js/core-uncompressed.js и видим, что Joomla.submitbutton вызывает Joomla.submitform( pressbutton ), которая записывает <input name="task" value="значение_кнопки"/> и отправляет форму.
Вот и вся магия  ;)
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
кстати если вам cid нужен только для того, чтобы получить calendar_id, то зачем вам вообще cid? сделайте чекбоксом именно calendar_id, и передавайте только его. тогда будут передаваться только отмеченные.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

tm2010

  • Захожу иногда
  • 76
  • 0 / 0
кстати если вам cid нужен только для того, чтобы получить calendar_id, то зачем вам вообще cid? сделайте чекбоксом именно calendar_id, и передавайте только его. тогда будут передаваться только отмеченные.
Обалдеть, не знал, но к сожалению по чекбоксу работает и edit и delete, хотя наверное можно их заставить работать по calendar_id ?
Или если совсем хорошо делать, можно ли к cid прикрепить значения календаря ?
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
но к сожалению по чекбоксу работает и edit и delete, хотя наверное можно их заставить работать по calendar_id ?
В каком смысле?
*

tm2010

  • Захожу иногда
  • 76
  • 0 / 0
В каком смысле?
Был неправ, видимо cid слишком важная переменная, которая применяется во многих джумловских методах по которые работают умолчанию, когда мы методы не переопределяем, и ее чекбокс должен называться cid
но можно ли cid сделать скажем двумерным, с тем чтобы дополнительно присваивать к его элементам значения calendar_id  ?
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
но можно ли cid сделать скажем двумерным, с тем чтобы дополнительно присваивать к его элементам значения calendar_id  ?
Нельзя. Если хотите использовать calendar_id, то придётся переопределять методы и отлавливать массив. А в чём проблема выводить ваши calendar_id в cid? Всё никак уловить не можем - вы используете и то и то на странице?
*

tm2010

  • Захожу иногда
  • 76
  • 0 / 0
Нельзя. Если хотите использовать calendar_id, то придётся переопределять методы и отлавливать массив. А в чём проблема выводить ваши calendar_id в cid? Всё никак уловить не можем - вы используете и то и то на странице?
Дмитрий,
1)если честно я не вижу у себя в форме cid , в тол не возьму, где она объявляется, и какое отношение к checkbox имеет
она присутствует в линке, но это уже последствия а не причина ее появления
2) calendar_id я по вашему общему совету объявил, и все нормально, вопрос такой - если передается только checked cid , то можно ли к нему прилепить значения calendar_id как то, там же в форме, и если можно то как, если я в самой форме этот cid не вижу даже

вот форма, вернее лэйаут
Спойлер
[свернуть]
*

tm2010

  • Захожу иногда
  • 76
  • 0 / 0
видимо эта строка разворачивает и объявляет этот cid как массив и значения calendar_id туда не прилепишь никак.
<?php echo JHtml::_('grid.id', $i, $row->id); ?>
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
в смысле не прилепишь? :) вы бы хоть попробовали вместо $row->id вставить $row->Google_id. и будет у вас в cid сразу ваш CALENDAR_ID, и будут передаваться только чекнутые.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
в смысле не прилепишь? :) вы бы хоть попробовали вместо $row->id вставить $row->Google_id. и будет у вас в cid сразу ваш CALENDAR_ID, и будут передаваться только чекнутые.
Решение как бы очевидное ;)

Если нужно решение вот этого
Цитировать
передается только checked cid, то можно ли к нему прилепить значения calendar_id
то применяем JS.

Сначала добавляем ID к инпуту calendar_id:
Код: php
<input id="cal<?php echo $row->id; ?>" type="hidden" name="calendar_id[]" value="<?php echo $row->Google_id; ?>">

ну и потом JSом отмечаем нужные чекбоксы при клике на cid[]:

Код: javascript
$("input[name = 'cid[]']").on( "click", function() {
  $('#cal'+this.value).attr('checked', 'checked');
});

Правда тогда ещё нужно отлавливать, если с cid[] убрали кексик, то убирать и в calendar_id[]  ^-^
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
та я так понимаю нужно вообще только $row->Google_id
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

tm2010

  • Захожу иногда
  • 76
  • 0 / 0
Решение как бы очевидное ;)

Если нужно решение вот этогото применяем JS.

Сначала добавляем ID к инпуту calendar_id:
Код: php
<input id="cal<?php echo $row->id; ?>" type="hidden" name="calendar_id[]" value="<?php echo $row->Google_id; ?>">

ну и потом JSом отмечаем нужные чекбоксы при клике на cid[]:

Код: javascript
$("input[name = 'cid[]']").on( "click", function() {
  $('#cal'+this.value).attr('checked', 'checked');
});

Правда тогда ещё нужно отлавливать, если с cid[] убрали кексик, то убирать и в calendar_id[]  ^-^
Хотел протестировать, но еще раз распишусь в  безграмотности, с JS вообще слаб
поставил Ваш  <input id="cal<?php echo $row->id; ?>" type="hidden" name="calendar_id[]" value="<?php echo $row->Google_id; ?>

добавил в этот же Layout
<?php
JHtml::script(JUri::base(). 'components/com_rentflat/assets/test.js', true);
?>
в HTML скрипт есть
в test.js ваш код на JS
Не умею добавлять обработчики на js


в консоли отладчика TypeError: $(...) is null

*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
$ на jQuery замените
Да.

Ну и зачем в отдельный JS файл? Прямо в макете:
Код: javascript
<script>
jQuery("input[name = 'cid[]']").on( "click", function() {
  jQuery('#cal'+this.value).attr('checked', 'checked');
});
</script>

Или так:
Код: javascript
<script>
(function($) {
  $("input[name = 'cid[]']").on( "click", function() {
  $('#cal'+this.value).attr('checked', 'checked');
  });
})(jQuery);
</script>
*

tm2010

  • Захожу иногда
  • 76
  • 0 / 0
при рефреше после загрузки index.php
Пустая строка не может быть аргументом метода getElementById(). jquery.min.js:2:24487
при клике на checkbox - несколько (8) таких же ошибок
Пустая строка не может быть аргументом метода getElementById(). jquery.min.js:2:24487
если ставлю точку останова на обработчике, не тормозит
при перезагрузке тоже


Пробовал и в тело layout ставить и $document->addScriptDeclaration во view , были эти ошибки
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
*

tm2010

  • Захожу иногда
  • 76
  • 0 / 0
Ха, я тупо списал Ваш код input , там нет checkbox  и я даже смысла кода не понимал
теперь понял смысл, включать невидимый checkbox календаря
Спасибо, поборю ошибку скрипта и проверю
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Ха, я тупо списал Ваш код input , там нет checkbox  и я даже смысла кода не понимал
вот я иногда задумываюсь о таком... если написать откровенно дырявый код и дать вставить его на сайт... :) то кто будет виноват? :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

tm2010

  • Захожу иногда
  • 76
  • 0 / 0
Удалось  просто копировать содержимое главного cid, в cal
$("input[name = 'cid[]']").on("click", function() {
      $('#cal' + this.value).attr('checked', $("input[name = 'cid[]']").prop("checked"));
});
Спасибо, но беда скрипт не работает везде в шаблоне
ставлю над <form> не работает и дебагер его не видит
ставлю в конце </form> - тарахтит и отлаживается
на всех броузерах

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

Ошибка Пустая строка не может быть аргументом метода getElementById(). jquery.min.js:2:24487
не зависит от моего кода, по всей Joomla куда бы я не ткнул в экран, я ее имею
Поставил новую Joomla другой версии в голую директорию, ошибка сохраняется
Только в Firefox , и только по ctrl-shift-I, FireBug ничего не кажет
ошибку имею такуюже как на сайте http://demo.t3-framework.org/joomla30/index.php/en/ если открыть по ctrl-shift-I
Побороть я ее хочу потому что думаю что в этом причина несрабатывания скрипта когда он находится условно не в нужном месте
строка кода где вырабатывается ошибка - 2827 -    elem = document.getElementById( match[2] ); при замененом jquery.min на полный.
Мне интересно у меня одного такая ошибка на этом сайте, локальны ли мои проблемы, глянте пожалуйста
такое ощущение что DOM документа как то разрушен, и jquery неверно все понимает.
кеш куки чистил
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Получить данные из поля " file", и передать в файл обработчик

Автор Glog

Ответов: 5
Просмотров: 1326
Последний ответ 01.08.2017, 13:55:40
от Glog
Передача переменной из hel-per.php в default.php

Автор ChervonStudio

Ответов: 6
Просмотров: 934
Последний ответ 13.06.2017, 15:57:43
от SmokerMan
Проблема с сохранением записи в БД (не все поля сохраняются)

Автор GuDeVic

Ответов: 42
Просмотров: 2342
Последний ответ 07.12.2016, 14:19:59
от b2z
Параноидальная защита формы

Автор zomby6888

Ответов: 2
Просмотров: 1158
Последний ответ 26.02.2016, 17:27:21
от zomby6888
Запись в БД из формы в плагине (модуле). Как!

Автор Sergeyy

Ответов: 13
Просмотров: 1282
Последний ответ 13.11.2015, 11:01:18
от Sergeyy