Новости Joomla

Перевод и публикация интервью с Joomla евангелистом на греческом портале Joomla

Перевод и публикация интервью на греческом портале Joomla 🇬🇷

Утро, просматриваешь входящие письма и изучаешь новости и внезапно обнаруживаешь, что инициатива, которую ты начал, подхватывается другими людьми. 🎉

Недавно я взял интервью у Билла (Василиса) Коциаса - руководителя студии, читающего лекции в университете и популяризатора Joomla в Греции. Это интервью из журнала NorrNext, в оригинале на английском, теперь доступно на греческом языке и опубликовано на портале joomla.gr. 🎉

До чего же приятно… 😇😊 Работа замечена и с ней посчитали необходимым ознакомить аудиторию страны, в которой Билл читает лекции. И это солнечная Греция - страна, страна, с которой Россию многое связывает. 🇬🇷🇷🇺🕊

Смотрю на греческий алфавит и тут же рисуются картины белоснежных зданий в окружении винограда и амфор, красивых женщин в сандалиях и мужественных воинов, охраняющих покой полисов, в которых ученые мужи работают над трудами, позже вошедшими в века. Красиво! 😇Но вернемся к интервью.

Из него вы узнаете, что в Греции доля Joomla среди CMS занимает порядка 30-40%. По моему мнению это - самый высокий показатель во всем мире. Также чтение лекций о Joomla в университетах позволит привести новых пользователей и к тому же молодое поколение. Ну и огромное кол-во сертификтатов Билла на стене (смотрим фото в статье) свидетельствует о том, что Joomla может применяться как профессиональный инструмент.

🌐 Оригинальное интервью (на английском)
🇬🇷 Интервью на греческом портале (joomla.gr)

Что насчет перевода на русский? Увы, времени всего 24 часа в сутках. Я продолжаю готовить новые интервью. Возможно, после завершения выпуска журнала, рассмотрю перевод некоторых интервью на русский. Но я об этом не говорил. 😊 В блоге @eugenius_blog публикую анонсы интересных событий из мира Joomla, интервью, уроки и полезные советы, а также делюсь мыслями:, связанными с разработкой и веб-дизайном.

Обработка HTTP ответа в Joomla 6+. Изменения по сравнению с Joomla 3 - Joomla 5

👩‍💻 Обработка HTTP ответа в Joomla 6+. Изменения по сравнению с Joomla 3 - Joomla 5.В Joomla для выполнения внешних запросов из PHP к сторонним API используется класс Joomla\Http\Http напрямую или же Joomla\Http\HttpFactory, который возвращает для работы преднастроенный по умолчанию класс Http. О работе с HTTP-запросами подробно рассказывалось в статье 2021 года Создание внешних запросов с использованием HttpFactory (Joomla). Некоторые изменения касаются работы с ответами на запросы. Например, наш запрос:
use Joomla\Http\HttpFactory;$http = (new HttpFactory)->getHttp($options, ['curl', 'stream']);$response = $http->get('https://any-url.ru/api/any/endpoint');
Раньше можно было получить код ответа или тело ответа как свойство $response - $response->code или $response->body. Однако, Joomla, начиная с Joomla 4 во многом переходит на стандарты PSR. В частности для работы с HTTP-ответами - на PSR-7. Также хорошая статья на Хабре о PSR-7: PSR-7 в примерах.
Прямое обращение к свойствам code, headers, body объявлено устаревшим в Joomla 6.0.0 и обещают удалить в Joomla 7.0.0.
Вместо этого нужно работать с HTTP-ответом по стандартам PSR-7. Код ответа.Было $response->code. Стало $response->getStatusCode().Заголовки ответа.Было $response->headers. Стало $response->getHeaders().Тело ответа.Было $response->body. Стало (string)$response->getContents().В тело ответа теперь приходит не строка, а поток - объект класса Laminas\Diactoros\Stream. Поэтому его нужно привести к строке (если это json, к примеру): (string)$response->getContents(). Чаще всего в коде Joomla встречается именно такой вариант. Однако, есть и вариант с перемещением указателя чтения на начало потока:
// Получили ответ в виде потока$stream = $response->getBody();// "перемотали" на начало$stream->rewind();// Получили строковый ответ$json = $stream->getContents();
В итоге результат одинаковый.@joomlafeed#joomla #разработка #php

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

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
Здавствуйте!
В компоненте конкретная запись из списка записей вызывается для редактирования. При этом print_r, вставленные  в модели в методы getForm и loadFormData показывают правильную информацию, вернее, информация показывает, что всё правильно загружается, а при сохранении изменений в записи print_r не выводит информацию ни в контроллере, ни в функции сохранения save в модели. Почему так происходит?
Форма:
Спойлер
[свернуть]
т.е. должно выполниться задание order.save
контроллер order.php:
Спойлер
[свернуть]
модель order.php
Спойлер
[свернуть]
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
После print_r() надо делать exit(), чтобы прервать работу скрипта, иначе он пойдет дальше, не выводя нужную вам инормацию на экран.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Тренд

  • Захожу иногда
  • 59
  • 6 / 0
Проверьте в контроллере какие параметры он вообще получает на входе.
Как предположение...
Заметил что одновременно при отправке формы уходит
GET: &task=order.save&
И POST: <input type="hidden" name="task" value="order.save"
Возможно, в результате получается массив task[].
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
После print_r() надо делать exit(), чтобы прервать работу скрипта, иначе он пойдет дальше, не выводя нужную вам инормацию на экран.
а в exit надо ту же переменную ставить? print_r($anything); exit($anything);?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
а в exit надо ту же переменную ставить? print_r($anything); exit($anything);?
Не нужно. А почему не пробовали перед тем, как спрашивать?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
После print_r() надо делать exit(), чтобы прервать работу скрипта, иначе он пойдет дальше, не выводя нужную вам инормацию на экран.
Спасибо!
Оказалось, что поле типа checkbox, если при редактировании записи убрать галочку, то оно вообще исчезает из набора.
Вот набор до редактирования, где в поле [mcd_a] => 1 стоит галочка
Спойлер
[свернуть]
   [created_by] => 573
    [user_cod] => 12
    [user_lab_cod] => 14
    [head_id] => 0
    [exec_id] => 0
    [exec_cod] => 0
    [exec_lab_cod] => 24
)
requestData
-->
[свернуть]
а вот этот же набор, когда в поле [mcd_a]  галочку убрали
Спойлер
[свернуть]
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
Не нужно. А почему не пробовали перед тем, как спрашивать?
((( Не могу объяснить, почему я так сделала. Извините.
Сначала спросила, а потом вспомнила, стала пробовать отладку.
*

fsv

  • Живу я здесь
  • 2782
  • 411 / 2
Оказалось, что поле типа checkbox, если при редактировании записи убрать галочку, то оно вообще исчезает из набора.
решение
Веб-разработка: заказ. Только новая разработка.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
решение
Угу, нечасто сталкиваюсь с такой проблемой, но использую 2-й вариант в таких случаях.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Так писать куда проще чем по два раза echo
Код: php
echo '<pre>', print_r($data), '</pre>';
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

dmitry_stas

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

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
true вторым параметром в print_r не хватает
В данном случае не надо в строку. Вот если надо было бы в переменю или в return передать. А чисто для вывода этого достаточтно. хотя в функции лучше exit() добавить чтобы остановить на нужном месте. то бишь
Код: php
echo '<pre>', print_r($data), '</pre>';
exit();
я так обычно делаю когда с save играюсь.  еще var_dump юзаю если нужно
Код: php
echo '<pre>', var_dump($data), '</pre>';
exit();
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
решение
Большое спасибо! Хорошо сказано:This is a common mistake for component developers thinking Joomla takes care of this.
« Последнее редактирование: 16.06.2017, 09:01:00 от GuDeVic »
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
В данном случае не надо в строку. Вот если надо было бы в переменю или в return передать. А чисто для вывода этого достаточтно. хотя в функции лучше exit() добавить чтобы остановить на нужном месте. то бишь
Код: php
echo '<pre>', print_r($data), '</pre>';
exit();
я так обычно делаю когда с save играюсь.  еще var_dump юзаю если нужно
Код: php
echo '<pre>', var_dump($data), '</pre>';
exit();
Спасибо, теперь и я так делаю.
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
Спасибо всем, кто помог советами.
Не совсем, вернее совсем, не по теме. Вопрос: как вернуться из формы по ссылке, имитирующей кнопку, возврат на последний активный пункт меню?
Имеется в виду, что есть меню (на стороне сайта) для разных групп пользователей. Авторам можно создавать новые записи (предварительно выбрав тип записи), можно редактировать собственную запись, выбрав её из списка или просто просматривать. Завлабы должны утвердить, исполнители взять в работу, потом выполнить и т.д.
Т.е. в некоторые моменты надо после просмотра записи вернуться не на шаг назад, а именно на последний активный пункт меню. И лучше бы в этот момент не было возможности вернуться назад по стрелочке <-  в навигаторе.
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
Угу, нечасто сталкиваюсь с такой проблемой, но использую 2-й вариант в таких случаях.
Да уж. А я, как оказалось, вчера воспользовалась вариантом 3.  2-й гораздо надёжнее, но вчера я о нём не знала.
*

dmitry_stas

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

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
ну как это не надо, если надо? а потом будете думать, откуда лишняя 1 в выводе.
Ну есть она не просит, болтается себе ниже объекта или array. А так и писать меньше да и удобнее. Когда на хоткее или макросе или ещё на чем. Ну а не объект и не массив, лучше в var_dump.
Хотя сугубо имхо ибо 1 мне лично не мешает.
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
не, ну ты погляди на него :) это ошибка, а не имхо :) так делать нельзя. болтается ниже объекта или массива - это когда объект или массив. а была бы там строка или число
Код
$data = 5432;
echo '<pre>', print_r($data), '</pre>';
и уже было бы немного веселее :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
не, ну ты погляди на него :) это ошибка, а не имхо :) так делать нельзя. болтается ниже объекта или массива - это когда объект или массив. а была бы там строка или число
Код
$data = 5432;
echo '<pre>', print_r($data), '</pre>';
и уже было бы немного веселее :)
А на фига ты в print_r засовываешь строку или число. что же до return парметра он используется чтобы вернуть значение а не выводить его. А здесь чистый вывод.
для строки или чиста можно и так вывести.
Код: php
echo '<pre>'.$data.'</pre>';
А если ты не знаешь что тебе приходит то принт вообще не канет. лучше var_dump
« Последнее редактирование: 16.06.2017, 11:55:28 от Septdir »
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
тю :) та какая ж разница что засовывать. отладку надо делать в принципе не через print_r и var_dump, коли о том речь. но мы то о другом :) я о принципе говорю. а принцип как раз и заключается в том, что конструкция
Код
echo '<pre>', print_r($data), '</pre>';
дает неявный результат, и может быть причиной ошибки. ты ж советуешь, как лучше. а может получится наоборот. вот прочтут тему 100500 человек, и некоторые обязательно наткнутся на лишнюю единицу, которая приведет их в ступор :)

в конце концов цикл можно тоже так вывести
Код
$a = +print_r('start');
while ($a<=10) {
echo '<br />', $a++;
}
echo '<br />', 'finish';
но только надо четко понимать, что ты делаешь :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
ты ж советуешь, как лучше.
Я советую как проще. а проще == короче.
Но ладно признаю ты прав. и закончим на этом
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

dmitry_stas

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

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
*DRINK*
в принципе если разобраться, то мое утверждение чтотоже не совсем верно. так делать можно. но просто для копипаста имхо не годится такое :) потому что надо понимать, что делаешь, а копипастят обычно те, кто пока далек от понимания...
Ну даже в копи пасе надо понимать что ты делаешь
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
Очень познавательно.
Ну, а мой вопрос  Ответ #14 : Сегодня в 09:58:17 » можно задать в новой теме? Здесь не подскажете про возможность возврата на последний активный пункт меню?
*

dmitry_stas

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

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
автоматической возможности возврата на последний активный пункт меню нет. сделать то можно, но для этого надо запоминать например URL последнего активного пункта меню в сессии, а в форме выводить кнопку для перехода на запомненный URL. запретить кнопку Back - теоретически тоже можно, но это тогда нужно все переходы делать аяксом, без изменения history браузера, но это очень глобально, переделки очень весомые скорее всего будут.
Я понимаю, что в сессии надо записать URL последнего активного пункта меню. А как получить этот URL? Какие команды?
*

fsv

  • Живу я здесь
  • 2782
  • 411 / 2
На всех страницах формы можно попробовать пушить в хистори предыдущую страницу, чтобы при нажатии "назад", попасть на нее.
Веб-разработка: заказ. Только новая разработка.
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
автоматической возможности возврата на последний активный пункт меню нет. сделать то можно, но для этого надо запоминать например URL последнего активного пункта меню в сессии, а в форме выводить кнопку для перехода на запомненный URL. запретить кнопку Back - теоретически тоже можно, но это тогда нужно все переходы делать аяксом, без изменения history браузера, но это очень глобально, переделки очень весомые скорее всего будут.
Если из пункта А направляешься в пункт Б (из меню для создания новой записи или по ссылке из списка записей для редактирования конкретной записи) как в пункте Б сгенерировать URL, по которой там оказался?
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
На всех страницах формы можно попробовать пушить в хистори предыдущую страницу, чтобы при нажатии "назад", попасть на нее.

Вы имеете в виду javascript:history.back();?  Ну, если запись вызвана из списка на редактирование, после успешного редактирования управление передаётся на просмотр результата редактирования, не смертельно, но можно шагами назад пройти обратный путь. А если при создании новой записи после просмотра созданной записи снова возвращаться в форму для создания новой записи? Это уже чревато, тем более, что создание новой записи связано с типом записи. Поэтому хотелось бы большей определённости при возврате, с вещами на выход.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Почему в Phoca Guestbook не защищает Google Captcha?

Автор Mick_20

Ответов: 2
Просмотров: 1276
Последний ответ 24.03.2025, 20:37:10
от R31rus
Почему Joomla не поддерживает формат webp?

Автор Sensession

Ответов: 74
Просмотров: 14715
Последний ответ 03.10.2023, 19:44:42
от fsv
Почему в админке Joomla в Менеджере категорий не отображаются счетчики материало

Автор mak200

Ответов: 0
Просмотров: 762
Последний ответ 28.07.2022, 16:42:17
от mak200
Не выполняется проверка решений reCAPTCHA

Автор Scaltro

Ответов: 1
Просмотров: 1170
Последний ответ 07.07.2022, 22:26:59
от ProtectYourSite
Знакомый почему-то не может войти в учетную запись Joomla со своего компьютера

Автор admi5575

Ответов: 6
Просмотров: 1404
Последний ответ 18.12.2021, 20:34:59
от draff