Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

Общераспространенная ошибка в коде расширений

Форум для авторов расширений для phpBB. Здесь можно попросить помощи в разработке у коллег.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 14 лет 4 месяца
Благодарил (а): 43 раза
Поблагодарили: 506 раз
Контактная информация:

Общераспространенная ошибка в коде расширений

Сообщение Pazh »

Все мы люди, все мы ошибаемся (с)

Обнаружен интересный косяк не движка, а авторов расширений, которые брали для изучения основ расширениеписания "официальные" расширения с phpbb.com
Во многих контроллерах для вывода данных на экран с использованием шаблонов пишут подобный код (позаимствованный из "официальных" расширений):

Код: Выделить всё

		page_header($page_title);

		$this->template->set_filenames(array(
			'body' => $template_html));

		make_jumpbox(append_sid("{$this->phpbb_root_path}viewforum.$this->php_ext"));
		page_footer();
		return new Response($this->template->return_display('body'), 200);
НО официалы допустили в нем опечатку и авторы расширений стали ее плодить в своих расширениях:
в template нет функции return_display, а т.к. до этой строчки в здравом уме исполнение кода "никогда" не доходит, то и баг этот тянется еще с 3.1 версии.

Правильный код последней строки:

Код: Выделить всё

		return new Response($this->template->assign_display('body'), 200);
Помощь в ЛС/email только за WM или ЮMoney
Аватара пользователя
1smerch1
phpBB 2.0.4
Сообщения: 435
Стаж: 6 лет 4 месяца
Откуда: Россия
Благодарил (а): 190 раз
Поблагодарили: 15 раз
Контактная информация:

Re: Сообщаем об ошибках phpBB 3.2.x разработчикам

Сообщение 1smerch1 »

Pazh писал(а): 11.01.2018 0:11Правильный код последней строки:
В чем разница и на что влияет это изменение?
Спорт - сила
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 14 лет 4 месяца
Благодарил (а): 43 раза
Поблагодарили: 506 раз
Контактная информация:

Re: Сообщаем об ошибках phpBB 3.2.x разработчикам

Сообщение Pazh »

1smerch1, не забивайте себе голову не нужной информацией, эта инфа для разработчиков расширений и группы поддержки
Помощь в ЛС/email только за WM или ЮMoney
Аватара пользователя
1smerch1
phpBB 2.0.4
Сообщения: 435
Стаж: 6 лет 4 месяца
Откуда: Россия
Благодарил (а): 190 раз
Поблагодарили: 15 раз
Контактная информация:

Re: Сообщаем об ошибках phpBB 3.2.x разработчикам

Сообщение 1smerch1 »

Pazh писал(а): 11.01.2018 0:33не забивайте себе голову не нужной информацией, эта инфа для разработчиков расширений и группы поддержки
Учтем!
Спорт - сила
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 9 лет 11 месяцев
Благодарил (а): 41 раз
Поблагодарили: 932 раза

Re: Общераспространенная ошибка в коде расширений

Сообщение LavIgor »

Pazh, в таком случае непонятен сам смысл использования строчки return.
По логике стоит постараться избежать вызовов функций шапки и подвала, однако функцию подвала можно вызвать с соответствующими значениями параметров, чтобы выполнение скрипта на ней не прекращалось.

Посмотрел - правильней всего использовать соответствующий метод класса-помощника.
Тем более, это есть в мануале: https://area51.phpbb.com/docs/dev/3.2.x ... t-handling.
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5270
Стаж: 19 лет 2 месяца
Откуда: Питер
Благодарил (а): 188 раз
Поблагодарили: 800 раз
Контактная информация:

Re: Общераспространенная ошибка в коде расширений

Сообщение Siava »

LavIgor, то есть в данном случае так?

Код: Выделить всё

return new \Symfony\Component\HttpFoundation\Response('body', 200);
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 9 лет 11 месяцев
Благодарил (а): 41 раз
Поблагодарили: 932 раза

Re: Общераспространенная ошибка в коде расширений

Сообщение LavIgor »

Siava, в данном случае return $this->helper->render($template_html, $page_title); вместо всего кода, приведённого в первом сообщении.
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 14 лет 4 месяца
Благодарил (а): 43 раза
Поблагодарили: 506 раз
Контактная информация:

Re: Общераспространенная ошибка в коде расширений

Сообщение Pazh »

Siava, нет
Совсем правильно так:
вместо:

Код: Выделить всё

		page_header($page_title);

		$this->template->set_filenames(array(
			'body' => $template_html));

		make_jumpbox(append_sid("{$this->phpbb_root_path}viewforum.$this->php_ext"));
		page_footer();
		return new Response($this->template->return_display('body'), 200);

должно быть

Код: Выделить всё

		return $this->helper->render($template_html, $page_title);
где
$template_html = 'template_filename.html';!!! Т.е. имя шаблона, хотя нормально отрабатывает и если вместо имени шаблона передавать уже заполненный блок шаблона через $this->template->assign_display('body')
и в конструкторе контроллера определено контроллер '@controller.helper'
$this->helper = $helper;

Единственно что может здесь негативно "выстрелить" (хотя сам не проверял) - если в шаблоне расширения используются переменные, которые определяются в функции page_header и page_footer, то как они будут ложиться в шаблон расширения.
Последний раз редактировалось Pazh 11.01.2018 9:24, всего редактировалось 1 раз.
Помощь в ЛС/email только за WM или ЮMoney
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 14 лет 4 месяца
Благодарил (а): 43 раза
Поблагодарили: 506 раз
Контактная информация:

Re: Общераспространенная ошибка в коде расширений

Сообщение Pazh »

В Skeleton-е кстати код в контроллере стоит правильный и он очень помогает для первичного ознакомления с основами написания расширений
Помощь в ЛС/email только за WM или ЮMoney
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 9 лет 11 месяцев
Благодарил (а): 41 раз
Поблагодарили: 932 раза

Re: Общераспространенная ошибка в коде расширений

Сообщение LavIgor »

Pazh, выше дал тот же ответ, но покороче.
Функции шапки и подвала в методе помощника вызываются, об этом беспокоиться не стоит.
Ответить

Вернуться в «Для разработчиков»