Новости 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 Гость просматривают эту тему.
  • 7 Ответов
  • 2150 Просмотров
*

nobody

  • Новичок
  • 5
  • 0 / 0
Добрый день!
Сделал вывод стандартной формы обратной связи в модальном окне, подключил рекапчу, и все бы хорошо, но сама капча не выводится!
Буду очень признателен, за подсказку, куда копать!

Вывод модальных окон подключен в index.php шаблона: JHTML::_('behavior.modal');. Шаб самописный.

Вызов формы происходит по ссылке /component/contact/contact/1.html?tmpl=component

В коде модальной формы присутствует блок капчи:
Код
<div class="control-label">
<label id="jform_captcha-lbl" for="jform_captcha" class="hasPopover required" title="" data-content="Введите текст, который вы видите на картинке." data-original-title="CAPTCHA">
CAPTCHA<span class="star">&nbsp;*</span></label>
</div>
<div class="controls"><div id="jform_captcha" class="g-recaptcha  required" data-sitekey="6Lcur2QUAAAAAHjHgn3AmwMLdwk1ev-EK0jdt1QO" data-theme="light" data-size="normal"></div></div>
Но самой капчи, как я уже говорил нет:


ссылка на пациента karussia.ru
*

lexxbry

  • Живу я здесь
  • 2387
  • 68 / 8
у вас скрипт CAPTCHA то подключен?
SEO-оптимизация,продвижение
Создание и сопровождение сайтов на Joomla
Миграция
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
*

nobody

  • Новичок
  • 5
  • 0 / 0
Ключи для домена проверяйте

у вас скрипт CAPTCHA то подключен?

Я возможно неправильно акцентировал внимание, но проблема с выводом капчи существует только в модальном окне. При выводе компонента на отдельную страницу, капча замечательно работает:

*

nobody

  • Новичок
  • 5
  • 0 / 0
Ну и в продолжение.
Сам блок капчи, при выводе компонента обратной связи на отдельной странице выводится в iframe. Получается, что в модальном окне ifreme не прогружается. В чем может быть причина?
*

kern.USR

  • Давно я тут
  • 827
  • 68 / 1
У вас контент модального окна рендерится только после вызова этого окна. Капча, по умолчанию, рендерится после загрузки страницы. Соответсвенно вы и не увидите свою, капчу в модалке, не вызвав насильный рэндэр. посмотрите тут https://developers.google.com/recaptcha/docs/display#js_api
Вам нужен метод grecaptcha.render
*

nobody

  • Новичок
  • 5
  • 0 / 0
kern.USR спасибо!

Смысл метода понятен, но как не крутил, так и не смог догнать, куда воткнуть скрипт.

В head index.php (как по ссылке https://developers.google.com/recaptcha/docs/display#js_api в примерах показано ) он не заработал, если в шаблон com_contact (default_form.php), то там  вывод поля с капчей через php вызывается.

В общем, не хватает мне знаний, как его насильно вызвать, да и что-то мне подсказывает, что надо запуск grecaptcha.render к открытию модалки привязывать, а как это сделать — не догоняю.
Буду очень признателен, за подсказку!
*

kern.USR

  • Давно я тут
  • 827
  • 68 / 1
Попробуйте в шаблон формы вставить вот такой вызов
Код
jQuery.getScript('https://www.google.com/recaptcha/api.js');
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

captcha - recaptcha

Автор kostia

Ответов: 5
Просмотров: 1351
Последний ответ 05.01.2025, 23:08:31
от x1
Видео в модальном окне

Автор Leo1986

Ответов: 0
Просмотров: 762
Последний ответ 25.03.2024, 18:48:40
от Leo1986
reCAPTCHA V2 Google - Для Joomla 3

Автор Alex GOOD

Ответов: 35
Просмотров: 9529
Последний ответ 10.01.2024, 21:41:38
от Vastriet
reCapcha во всплывающем окне - "Ошибка защиты от спама"

Автор Dannik

Ответов: 12
Просмотров: 2410
Последний ответ 14.09.2023, 18:59:24
от all_zer
Не выполняется проверка решений reCAPTCHA

Автор Scaltro

Ответов: 1
Просмотров: 985
Последний ответ 07.07.2022, 22:26:59
от ProtectYourSite