Новости Joomla

Метод registerListeners() в CMSPlugin в плагинах планируется удалить в Joomla 7.0

Метод registerListeners() в CMSPlugin в плагинах  планируется удалить в Joomla 7.0

👩‍💻 Метод registerListeners() в CMSPlugin в плагинах планируется удалить в Joomla 7.0.Этот метод регистрирует устаревшие слушатели событий в диспетчере, имитируя работу плагинов Joomla! 3.x и ниже для Joomla 4+. По умолчанию этот метод ищет все общедоступные методы, название которых начинается с on. Он регистрирует лямбда-функции (замыкания), которые пытаются преобразовать аргументы отправленного события в аргументы вызова метода и вызвать ваш метод on<Что-то>. Результат передаётся обратно событию в его аргумент result.Теперь этот слой совместимости с устаревшей Joomla 3 помечен к удалению в Joomla 7.0, которая должна выйти осенью 2027 года. Это означает, что те уникальные расширения от Joomla 2.5 / Joomla 3, которые ещё работали на Joomla 4-6 скорее всего окончательно перестанут работать на Joomla 7. Предполагается, что активные разработчики планомерно и постепенно избавляются от технического долга и обновляют свои расширения. @joomlafeed#joomla #разработка #php

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

Biss

  • Давно я тут
  • 995
  • 101 / 0
Условие удаления
« : 14.10.2022, 10:01:53 »
Добрый день. Помогите правильно написать, у меня не получается. Код должен удалить отмеченные строки или строку при условии что нет вложенностей
Код
			if (isset($_POST['delete']))
{
$del_cat = $_POST['checkbox'];
foreach ($del_cat as $del_parent) {
$query = $pdo->query("SELECT `sub_cat_parent` FROM `e_sub_cat` WHERE `sub_cat_parent`='$del_parent'");
$search= $query->fetch(PDO::FETCH_BOTH);

if ($search != '')
{
echo "<div class='alert alert-danger' role='alert'><h5>Видаляю...</h5></div>";
echo "<br /><img class='img_load' src='".$dom."/karat/img/load.gif'>";
$_SESSION['message'] = "<div class='alert alert-danger' role='alert'>Категорія не пуста!</div>";
header("Refresh:1;url=".$dom."/karat/stock/cat_index.php");
exit();
}
if ($search == '')
{
foreach ($del_cat as $del_id) {
$query = $pdo->query("DELETE FROM `e_sub_cat` WHERE `id` = '$del_id'");
}
echo "<div class='alert alert-danger' role='alert'><h5>Видаляю...</h5></div>";
echo "<br /><img class='img_load' src='".$dom."/karat/img/load.gif'>";
$_SESSION['message'] = " <div class='alert alert-success' role='alert'>Видалено!</div>";
header("Refresh:1;url=".$dom."/karat/stock/cat_index.php");
exit();
}
}
}
*

fsv

  • Живу я здесь
  • 2784
  • 412 / 2
Re: Условие удаления
« Ответ #1 : 14.10.2022, 11:43:44 »
Если без сообщений:
Код
"DELETE FROM `e_sub_cat` WHERE `id` IN ('".implode(',', $del_cat."') AND `sub_cat_parent` = 0";
Только $del_cat через фильтр пропустите.

Если надо сообщение, что было не удалено и почему, аналогично в SELECT получить id/имя не удаленных категорий. `sub_cat_parent` > 0. И в очередь сообщений передать нужный текст.
Веб-разработка: заказ. Только новая разработка.
*

Biss

  • Давно я тут
  • 995
  • 101 / 0
Re: Условие удаления
« Ответ #2 : 14.10.2022, 12:15:34 »
Код
Только $del_cat через фильтр пропустите.
цыкл? не совсем понял
*

fsv

  • Живу я здесь
  • 2784
  • 412 / 2
Re: Условие удаления
« Ответ #3 : 14.10.2022, 13:21:06 »
Посмотрите начало любого метода какого-либо контроллера, получающего массив ids.
Код
// Make sure the item ids are integers
$cid = ArrayHelper::toInteger($cid);
Например, delete() в AdminController.
Веб-разработка: заказ. Только новая разработка.
*

Biss

  • Давно я тут
  • 995
  • 101 / 0
Re: Условие удаления
« Ответ #4 : 14.10.2022, 13:57:05 »
Это самописный код, без Joomla
*

fsv

  • Живу я здесь
  • 2784
  • 412 / 2
Re: Условие удаления
« Ответ #5 : 14.10.2022, 15:22:33 »
Это самописный код, без Joomla
А Joomla - тоже самописный код, на php. Зайдите в toInteger и посмотрите, что там.
Код
$cid = ArrayHelper::toInteger($cid);
соответствует
Код
if (\is_array($cid)) {
    $cid = array_map('intval', $cid);
} else {
    $cid = array();
}
Веб-разработка: заказ. Только новая разработка.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться