Новости Joomla

Совет по Joomla: $db->getQuery(true) стал устаревшим

Совет по Joomla: $db->getQuery(true) стал устаревшим

👩‍💻 Совет по Joomla: $db->getQuery(true) стал устаревшим.Раньше при создании запросов в базу данных мы всегда получали объект запроса с помощью метода

getQuery(). Если передавался параметр
$new =
true, то получали новый запрос. Если без - последний.

use Joomla\CMS\Factory;$db = Factory::getContainer()->get('DatabaseDriver');$query = $db->getQuery(new: true);// и строим запрос
Под капот Joomla 4 вошёл Joomla Framework (PHP фреймворк а-ля Laravel, Yii и т.д.), а для Joomla 5 он обновился - версия 3.4.1 вышла 6 октября 2023г. В методе фреймворка есть примечание о том, что параметр
$new, который передавался в метод
getQuery() помечен как устаревший и будет удалён в версии фреймворка 4.0.
The parameter $new is deprecated and will be removed in 4.0, use %s::createQuery() instead.В Joomla 4 версия Joomla Framework была 2.x., в Joomla 5 - 3.x. Поэтому есть предположение, что с выходом Joomla 6 обновится и версия фреймворка - станет 4.0. Поэтому для получения объекта для новых запросов следует использовать метод
createQuery(). Он уже представлен в ядре и широко используется. При этом метод
getQuery() останется, но, скорее всего, будет выполнять функцию только геттера - получения текущего запроса.
@joomlafeed#joomla #php #разработка

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

Daiver-86

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
JavaScript обработка XML формы
« : 11.06.2013, 20:27:43 »
Делаю компонент под Joomla 2.5 и столкнулась со следующей проблемой при разработке админской части.
Как можно обработать JavaScript-ом поле формы, которая находится в XML формате? :o
Мне надо при изменении одного select-а изменить содержимое другого select-а.
Если бы оно было на обычном HTML написано, то это не проблема.
Или может подскажите как обойти использование XML для формы.
Тогда будет сказка и не будет ни какой проблемы.
Помогите пожалуйста. ! Никак не могу разобраться. Заранее спасибо.
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
Re: JavaScript обработка XML формы
« Ответ #1 : 11.06.2013, 21:02:18 »
Цитировать
Или может подскажите как обойти использование XML для формы.
увы сказки не будет!
содержимое другого select должно меняться в зависимости от выбранного первого?
если да то лупите 1 селект через XML форму, а для второго пишете как на HTML, а дальше отлавливаете через JS изменение в первом селекте и меняете значение во втором!
*

Daiver-86

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Re: JavaScript обработка XML формы
« Ответ #2 : 11.06.2013, 21:19:22 »
увы сказки не будет!
содержимое другого select должно меняться в зависимости от выбранного первого?
если да то лупите 1 селект через XML форму, а для второго пишете как на HTML,
То есть в XML файле второй field стереть, а в php файле там где написано
Код: php
<?php echo $this->form->getLabel('field_name2'); ?>
<?php echo $this->form->getInput('field_name2'); ?>
заменить на
Код: html4strict
<select></select>
Я правильно поняла?
а дальше отлавливаете через JS изменение в первом селекте и меняете значение во втором!
А если у меня первый селект
Код: xml
<field type="sql">
У него на сколько мне известно нет аттрибута onchange. Как мне тогда отлавливать его изменение?
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
Re: JavaScript обработка XML формы
« Ответ #3 : 11.06.2013, 21:23:12 »
у <field type="sql"> есть атрибут name и после того как вы его зададите и выведете допустим так: <?php echo $this->form->getLabel('field_name1'); ?>
то он у него будет id jform_field_name1
а дальше например на jQuery
$('#jform_field_name1').on('change', function(){
делаете нужные действия
})
*

Daiver-86

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Re: JavaScript обработка XML формы
« Ответ #4 : 11.06.2013, 23:24:34 »
у <field type="sql"> есть атрибут name и после того как вы его зададите и выведете допустим так: <?php echo $this->form->getLabel('field_name1'); ?>
то он у него будет id jform_field_name1
а дальше например на jQuery
$('#jform_field_name1').on('change', function(){
делаете нужные действия
})
Что-то ваш кот не ловит моих мышей

Выводится так:
Код: php
<li><?php echo $this->form->getLabel('class_id'); ?>
<?php echo $this->form->getInput('class_id'); ?></li>

XML такой:
Код: xml
<field name="class_id" type="sql"
label="COM_PDDTEST_FORM_LBL___PDDTEST_TICKET_CLASS_ID"
description="COM_PDDTEST_FORM_DESC___PDDTEST_TICKET_CLASS_ID"
required="true"
filter="raw"
query="SELECT id AS value, class_name_short FROM #__pddtest_classes"
value_field="class_name_short" />

js:
Код: javascript
$('#jform_class_id').on('change', function(){
var id = $(this).val();
alert(id);
});

Алерт не всплывает. Что не так?
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
*

Daiver-86

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Re: JavaScript обработка XML формы
« Ответ #6 : 12.06.2013, 00:37:05 »
$('#jform_class_id').live('change', function(){
проверьте так
Тоже не работает.
Я на него посмотрела через FireBug, так у него возможно использование addEventListener()
Вопрос в том - откуда ему это навесить?
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
Re: JavaScript обработка XML формы
« Ответ #7 : 12.06.2013, 10:32:12 »
1. У вас jQuery подключен перед тем как вы пишете так:
Код: javascript
$('#jform_class_id').on('change', function(){
var id = $(this).val();
alert(id);
});
2. если подключен надеюсь вы не просто так его написали а в таком виде:
Код: javascript
<script type="text/javascript">
jQuery(document).ready(function($){
$('#jform_class_id').on('change', function(){
var id = $(this).val();
alert(id);
});
})
</script>
??
*

Daiver-86

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Re: JavaScript обработка XML формы
« Ответ #8 : 12.06.2013, 12:02:34 »
Все подключено, но в консоли ошибок пишет TypeError: $(...) is null
в этой строке:
Код: javascript
$('#jform_class_id').on('change', function(){
хотя в пейдж сорц
Код: html4strict
<select id="jform_class_id" name="jform[class_id]" class="required">
Может надо как-то сделать, чтобы скрипт подключался после загрузки всей страницы?
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: JavaScript обработка XML формы
« Ответ #9 : 12.06.2013, 12:12:20 »
Istaan же написал jQuery(document).ready(function($){ ...
Daiver-86 вы вначале пробуйте предложенные ответы
*

SDKiller

  • Живу я здесь
  • 2706
  • 329 / 5
  • ...ergo sum
Re: JavaScript обработка XML формы
« Ответ #10 : 12.06.2013, 12:41:33 »
А зачем в админке J 2.5 специально подключать jQuery для обработки onchange элемента?
Неужели для mootools это непосильная задача?
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
Re: JavaScript обработка XML формы
« Ответ #11 : 12.06.2013, 12:46:09 »
А зачем в админке J 2.5 специально подключать jQuery для обработки onchange элемента?
Неужели для mootools это непосильная задача?
я mootools плохо знаю
*

Daiver-86

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Re: JavaScript обработка XML формы
« Ответ #12 : 12.06.2013, 12:50:39 »
Istaan же написал jQuery(document).ready(function($){ ...
Daiver-86 вы вначале пробуйте предложенные ответы
Так я все так и написала. Но оно не срабатывает.
Вариант с
Код: javascript
$('#jform_class_id').live('change', function(){
тоже пробовала и ничего не получается.
Я все возможные варианты уже перепробовала.
Код
<script type="text/javascript">

jQuery(document).ready(function($){
$('#jform_class_id').live('change', function(){
var id = $(this).value();
alert(id);
});
})
</script>
Так не работает.
Код
<script type="text/javascript">

jQuery(document).ready(function($){
$('#jform_class_id').on('change', function(){
var id = $(this).value();
alert(id);
});
})
</script>
Так тоже не работает.
С jquery я никогда не работала. Только с чистым JavaScript.
Если туплю исправьте и скажите как надо.
В начале страницы у меня есть
Код: javascript
getScript('//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js',function() {
js = jQuery.noConflict();
js(document).ready(function(){


Joomla.submitbutton = function(task)
{
if (task == '__pddtest_ticket.cancel') {
Joomla.submitform(task, document.getElementById('__pddtest_ticket-form'));
}
else{

if (task != '__pddtest_ticket.cancel' && document.formvalidator.isValid(document.id('__pddtest_ticket-form'))) {

Joomla.submitform(task, document.getElementById('__pddtest_ticket-form'));
}
else {
alert('<?php echo $this->escape(JText::_('JGLOBAL_VALIDATION_FORM_FAILED')); ?>');
}
}
}

});
});
Если внутрь всего этого вот так вставляю
Код: javascript
getScript('//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js',function() {
js = jQuery.noConflict();
js(document).ready(function(){


Joomla.submitbutton = function(task)
{
if (task == '__pddtest_ticket.cancel') {
Joomla.submitform(task, document.getElementById('__pddtest_ticket-form'));
}
else{

if (task != '__pddtest_ticket.cancel' && document.formvalidator.isValid(document.id('__pddtest_ticket-form'))) {

Joomla.submitform(task, document.getElementById('__pddtest_ticket-form'));
}
else {
alert('<?php echo $this->escape(JText::_('JGLOBAL_VALIDATION_FORM_FAILED')); ?>');
}
}
}

$('#jform_class_id').live('change', function(){
var id = $(this).value();
alert(id);
});

});
});
то ошибка TypeError: $(...) is null в строке
Код: javascript
$('#jform_class_id').live('change', function(){
когда ставлю
Код: javascript
$('#jform_class_id').live('change', function(){
та же проблема.
Если вывожу отдельно
Код
<script type="text/javascript">
jQuery(document).ready(function($){
$('#jform_class_id').live('change', function(){
var id = $(this).value();
alert(id);
});
})
</script>
То ошибка jQuery is not defined
И то же самое с
Код
$('#jform_class_id').live('change', function(){
Какие мне еще варианты пробовать?
*

Daiver-86

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Re: JavaScript обработка XML формы
« Ответ #13 : 12.06.2013, 13:05:48 »
Неужели для mootools это непосильная задача?
Читать километры мануалов у меня, к сожалению уже нет времени. Все надо закончить быстро.
Если есть где-то описание, в котором я смогу разобраться максимум за пол часа и сама решить проблему - направьте, пожалуйста.
*

fsv

  • Живу я здесь
  • 2781
  • 410 / 2
Re: JavaScript обработка XML формы
« Ответ #14 : 12.06.2013, 13:26:17 »
У вас
js = jQuery.noConflict();
потом
$('#jform_class_id').live('change', function(){
и
$(...) is null
Замените на
js("body").on("change", "#jform_class_id", function(){
Если пройдет, замените body на ближайший к #jform_class_id родительский селектор, который в DOM при первой загрузке страницы и не меняется.
Веб-разработка: заказ. Только новая разработка.
*

Daiver-86

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Re: JavaScript обработка XML формы
« Ответ #15 : 12.06.2013, 14:36:29 »
Код: javascript
js("body").on("change", "#jform_class_id", function(){
Сработало, спасибо.
Если пройдет, замените body на ближайший к #jform_class_id родительский селектор, который в DOM при первой загрузке страницы и не меняется.
Пусть так живет. Он меня достал.
Дальше уже чистым js буду его мучать.
Всем спасибо. Тему можно считать закрытой.
*

SmokerMan

  • Гуру
  • 5291
  • 720 / 26
Re: JavaScript обработка XML формы
« Ответ #16 : 12.06.2013, 14:49:17 »
Читать километры мануалов у меня, к сожалению уже нет времени. Все надо закончить быстро.
а там и не надо километры читать)
события вешаются так же как и обычно для обычных элементов. Если пишите, что знаете JS, то не вижу в этом проблему.
Можно использовать getElementById (id известен) после загрузки DOM, если не хотите использовать библиотеки.
Можно тупо добавить событие onchange для элемента
Код
<?php $this->form->setFieldAttribute('class_id', 'onchange', 'alert(\'this demo onchange\')'); ?>
*

Daiver-86

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Re: JavaScript обработка XML формы
« Ответ #17 : 12.06.2013, 15:26:49 »
Можно тупо добавить событие onchange для элемента
Код
<?php $this->form->setFieldAttribute('class_id', 'onchange', 'alert(\'this demo onchange\')'); ?>
Вариант хороший, но куда его прописывать?
Я так понимаю, что это надо вставлять в функцию, которая перегружает функцию getInput()
Но где она прописываться должна? В какой части mvc?
*

SmokerMan

  • Гуру
  • 5291
  • 720 / 26
Re: JavaScript обработка XML формы
« Ответ #18 : 12.06.2013, 15:29:43 »
Вариант хороший, но куда его прописывать?
Я так понимаю, что это надо вставлять в функцию, которая перегружает функцию getInput()
Но где она прописываться должна? В какой части mvc?
в любой части до вывода элемента, т.е. до echo getInput()
*

Daiver-86

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Re: JavaScript обработка XML формы
« Ответ #19 : 12.06.2013, 15:52:44 »
Вот нашла интересную возможность сделать свой вид поля
только вот я хочу чтобы он имел всю функциональность поля sql и с добавлением аттрибута onchange.
Что мне тогда надо прописывать? А то у меня выводится через getInput() а не через getOptions()
*

SmokerMan

  • Гуру
  • 5291
  • 720 / 26
Re: JavaScript обработка XML формы
« Ответ #20 : 12.06.2013, 16:03:51 »
зачем делать свое поле ради одного атрибута не понятно)
если любой атрибут и так можно добавить
все стандартные поля в 2.5 лежат в директории libraries/joomla/form/fields, там же и sql делайте по аналогии если так уж хочется
А вобще стандартный JFormFieldList поддерживает событие onchange, т.е. его можно смело добавлять в XML

Цитировать
<field name="class_id" type="sql"
label="COM_PDDTEST_FORM_LBL___PDDTEST_TICKET_CLASS_ID"
description="COM_PDDTEST_FORM_DESC___PDDTEST_TICKET_CLASS_ID"
required="true"
filter="raw"
query="SELECT id AS value, class_name_short FROM #__pddtest_classes"
value_field="class_name_short"
onchange="alert('this just demo!')"
/>

*

Daiver-86

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Re: JavaScript обработка XML формы
« Ответ #21 : 12.06.2013, 16:34:12 »
его можно смело добавлять в XML
Все замечательно сработало.
А может есть средства Joomla для обновления содержимого другого селекта по изменении выбранного пункта в первом, асинхронным запросом?
Чтобы я не изобретала очередной велосипед через XmlHttp и JS.

P.S. Мне эти велосипеды уже некуда ставить.
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
Re: JavaScript обработка XML формы
« Ответ #22 : 12.06.2013, 16:57:27 »
Все замечательно сработало.
А может есть средства Joomla для обновления содержимого другого селекта по изменении выбранного пункта в первом, асинхронным запросом?
Чтобы я не изобретала очередной велосипед через XmlHttp и JS.

P.S. Мне эти велосипеды уже некуда ставить.
увы нету ( придется ещё один велосипед парковать ((
*

Daiver-86

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Re: JavaScript обработка XML формы
« Ответ #23 : 12.06.2013, 17:18:36 »
Ладно, тогда как мне прописать URL к файлу-обработчику вот тут:
Код: javascript
xmlhttp.open('POST', 'URL', true);
если к примеру я его кладу в папку mycomponent/administrator/controllers в установочном пакете и соответственно он будет на сервере лежать в папке site/administrator/components/com_mycomponent/controllers ?
*

SDKiller

  • Живу я здесь
  • 2706
  • 329 / 5
  • ...ergo sum
Re: JavaScript обработка XML формы
« Ответ #24 : 12.06.2013, 17:20:26 »
Код: javascript
xmlhttp.open('POST', 'URL', true);

Вот тут уж вы точно изобретаете велосипед.

http://mootools.net/docs/core/Request/Request
*

Daiver-86

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Re: JavaScript обработка XML формы
« Ответ #25 : 12.06.2013, 17:32:47 »
Вот тут уж вы точно изобретаете велосипед.
http://mootools.net/docs/core/Request/Request

Как про меня - те же яйца, только в профиль. Это уже кто к чему привык.
Код: javascript
var myRequest = new Request({
   [b] url: 'getMyText.php',[/b]
    method: 'get',
    onRequest: function(){
        myElement.set('text', 'loading...');
    },
    onSuccess: function(responseText){
        myElement.set('text', responseText);
    },
    onFailure: function(){
        myElement.set('text', 'Sorry, your request failed :(');
    }
});
А URL все равно писать надо.
*

SmokerMan

  • Гуру
  • 5291
  • 720 / 26
Re: JavaScript обработка XML формы
« Ответ #26 : 12.06.2013, 17:49:29 »
Цитировать
'index.php?option=com_mycomponent&task=file.task'
administrator/components/com_mycomponent/controllers/file.php - controller
в нем создать метод task() c обрывом в конце (т.е. die() или exit)
Это как один из вариантов, еще существуют разные способы
Читайте документацию - там все есть!
А то ппц получается: Мне все надо сделать быстро и срочно. Сделайте за меня, потому что я якобы все знаю и не хочу читать доки

*

Daiver-86

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Re: JavaScript обработка XML формы
« Ответ #27 : 12.06.2013, 19:04:45 »
'index.php?option=com_mycomponent&task=file.task'
в нем создать метод task() c обрывом в конце (т.е. die() или exit)
Спасибо.
Читайте документацию - там все есть!
А то ппц получается: Мне все надо сделать быстро и срочно. Сделайте за меня, потому что я якобы все знаю и не хочу читать доки
Я не говорила, что не хочу читать доки. Я имела ввиду, что я не хочу лопатить всё для того, чтобы найти нужную для меня крупицу.
Скажите что именно читать и дайте нормальные доки с примерами и я сама разберусь. А то доки черти как написанные,  примерами и не пахнет, поисковик ничего не находит, а если и находит, то только треш написанный в стиле доков. Получается как в фильме "Пятый элемент" - " -Вы знаете как это работает? -Теоретически - да". А тут гонят - иди читай доки. Результат - убиться веником.
Цитировать
Class: Request
An XMLHttpRequest Wrapper.
Mootools дает возможность составить запрос XMLHttp и это хорошо, но в чем разница если я его буду использовать в чистом виде, без обертки?
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Обработка Get запроса главной страницей

Автор Maklay

Ответов: 7
Просмотров: 3549
Последний ответ 25.05.2018, 11:16:51
от ShaMAD
Модуль. Сообщение о включенном AdBlock. Как отпустить Javascript в низ страницы?

Автор cartgen

Ответов: 2
Просмотров: 1697
Последний ответ 19.08.2015, 23:42:16
от palexa
Joomla 2.5: заполнение поля формы по параметру URL

Автор Kanarik

Ответов: 2
Просмотров: 1283
Последний ответ 07.05.2014, 11:17:47
от Kanarik
Модуль формы с обрезкой изображений

Автор lizz

Ответов: 0
Просмотров: 883
Последний ответ 13.03.2014, 10:35:55
от lizz
Обработка категорий для своего компонента

Автор bombapiter

Ответов: 7
Просмотров: 2176
Последний ответ 30.09.2013, 16:42:17
от bombapiter