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

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Здравствуйте!

Разрабатываю компонент, в котором есть вид(view), со страницы которого открываются три варианта дальнейшего развития событий:
1. увидеть список книг контактов с возможностью добавления или удаления книги.
2. добавить контакт в одну из книг.
3. импорт контактов.
Эти три пути отображает layout c наименованием default этого вида. Как правильно реализовать эти страницы под номерами 1,2,3 - с помощью отдельных view или с помощью отдельных layout этого view(потому что все эти страницы предназначены для работы с контактами)?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
View - об'ект, сформированный главным образом работой модели, которая работает с БД.
Layout берет готовые данные от своего view и отображает их.
У каждого элемента своя задача, при этом view - более ресурсозатратный.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
View - об'ект, сформированный главным образом работой модели, которая работает с БД.
Layout берет готовые данные от своего view и отображает их.
У каждого элемента своя задача, при этом view - более ресурсозатратный.
Попробую прийти к ответу на мой вопрос :) Получается, если модель у меня будет одна для всех этих страниц, то делаю один вид. Поскольку мне сейчас проще, чтобы все было просто(да и выигрыш какой-то может будет по производительности, если одному view и его модели не надо будет тащить все данные для этих страниц), то мне лучше наделать отдельные view под каждую из страниц. Логично?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Логично?
Нет.
1. Нужно будет организовать так, чтобы разные view делили между собой 1 модель.
2. Будет меньше производительности, поскольку в отличие от view, layout нет никакого дела до модели и БД(соответственно, и запросов туда).
Не будь паразитом, сделай что-нибудь самостоятельно!
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
Разрешите я Вас поправлю
Цитировать
Эти три пути отображает layout c наименованием default
Это не layouts это макет
UPD : Может немного не по теме
А про то что Вы спрашиваете ==
Цитировать
1. увидеть список книг контактов с возможностью добавления или удаления книги.
2. добавить контакт в одну из книг.
3. импорт контактов.
в модели представления есть такие методы
getLayout
setLayout

то есть в файле view.html.php
Вы можете переключать их
По умолчанию это default
Но если при выполнении какого нибудь условия Вы (можете) переключите его
к примеру так
Цитировать
$app = \JFactory::getApplication() ;
if( $app->input->get('view' , false , 'STRING') == 'add_contact' )
{
// Тут мы изменили макет с default => add_contact
$this->setLayout('add_contact');
// теперь в папке  tmpl - Joomla будет искать макет add_contact            
}#END IF
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Спасибо. То есть robert за несколько view, а gartes за один вью с разными макетами?
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
Нужно будет организовать так, чтобы разные view делили между собой 1 модель.
Если одна модель - то и view - должен быть один !
Цитировать
Будет меньше производительности, поскольку в отличие от view, layout нет никакого дела до модели и БД(соответственно, и запросов туда).
layout - Это просто кусочки - макетов которые Вы можете использовать в любых макетах default.php
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
а gartes за один вью с разными макетами
Да - нужен - 1 вью
Зайдите в менеджер пользователей посмотрите как там ! yes!
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Спасибо. То есть robert за несколько view, а gartes за один вью с разными макетами?
Нет, как раз наоборот. ;D
В общем так: если можно работать с 1 view, то так и сделаем.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
Цитировать
Нет, как раз наоборот.
Что то мы совсем запутались ! ))))
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Да уж, перечитал свои посты, так и не понял, почему их можно было трактовать наоборот :o.
Не будь паразитом, сделай что-нибудь самостоятельно!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Зачем нужны шаблоны вида компонента?

Автор NeuroZ

Ответов: 12
Просмотров: 1017
Последний ответ 04.10.2016, 14:31:05
от Septdir