Уважаемые пользователи!
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 | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 1 месяц
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2752 раза
Контактная информация:

Re: Расширения - это просто!

Сообщение Sheer »

Slash писал(а): И что за переменная отвечает за текст поста?
Нет такой. Есть индекс message массива data
Пример

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

Array
(
    [topic_title] => [Преф]    ddd
    [topic_first_post_id] => 11
    [topic_last_post_id] => 12
    [topic_time_limit] => 0
    [topic_attachment] => 0
    [post_id] => 11
    [topic_id] => 3
    [forum_id] => 2
    [icon_id] => 0
    [poster_id] => 2
    [enable_sig] => 1
    [enable_bbcode] => 1
    [enable_smilies] => 1
    [enable_urls] => 1
    [enable_indexing] => 1
    [message_md5] => f1900480da220755e72cb276e045e1e2
    [post_checksum] => f41b7419d281bd97a110cbf844b76de1
    [post_edit_reason] => Просто  так - последнее сообщене было
    [post_edit_user] => 2
    [forum_parents] => a:1:{i:1;a:2:{i:0;s:40:"Ваша первая категория";i:1;i:0;}}
    [forum_name] => Ваш первый форум
    [notify] => 
    [notify_set] => 0
    [poster_ip] => 127.0.0.1
    [post_edit_locked] => 0
    [bbcode_bitfield] => QA==
    [bbcode_uid] => 1hkhog33
    [message] => Бла-бла
[b:1hkhog33]Бла-бла[/b:1hkhog33]
    [attachment_data] => Array
        (
        )

    [filename_data] => Array
        (
            [filecomment] => 
        )

    [topic_status] => 0
    [topic_visibility] => 1
    [post_visibility] => 1
    [topic_posts_approved] => 2
    [topic_posts_unapproved] => 0
    [topic_posts_softdeleted] => 0
)
А событие, вот оно

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

    /**
    * Modify sql query data for post submitting
    *
    * @event core.submit_post_modify_sql_data
    * @var    array    data                Array with the data for the post
    * @var    array    poll                Array with the poll data for the post
    * @var    string    post_mode            Variable containing posting mode value
    * @var    bool    sql_data            Array with the data for the posting SQL query
    * @var    string    subject                Variable containing post subject value
    * @var    int        topic_type            Variable containing topic type value
    * @var    string    username            Variable containing post author name
    * @since 3.1.3-RC1
    */
    $vars = array(
        'data',
        'poll',
        'post_mode',
        'sql_data',
        'subject',
        'topic_type',
        'username',
    );
    extract($phpbb_dispatcher->trigger_event('core.submit_post_modify_sql_data', compact($vars)));
 
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
Slash
phpBB 2.0.10
Сообщения: 794
Стаж: 13 лет 2 месяца
Благодарил (а): 101 раз
Поблагодарили: 79 раз
Контактная информация:

Re: Расширения - это просто!

Сообщение Slash »

Sheer, теперь дошло до меня, как надо действовать!
Спасибо!

Отправлено спустя 24 минуты 19 секунд:
Sheer, еще одно Вам спасибо! У меня все получилось!
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12414
Стаж: 12 лет 8 месяцев
Благодарил (а): 224 раза
Поблагодарили: 3524 раза
Контактная информация:

Re: Расширения - это просто!

Сообщение Татьяна5 »

Как более корректно подтянуть названия таблиц и констант, а также классы из расширения в модуль этого расширения в админке? Пробовала подключать всё что нужно через services.yml - не видит ни таблиц, ни классов. Объявляла названия таблиц глобальными - тоже не видит.

Отправлено спустя 12 минут 40 секунд:
Пока получила через $phpbb_container
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 9 лет 11 месяцев
Благодарил (а): 41 раз
Поблагодарили: 933 раза

Re: Расширения - это просто!

Сообщение LavIgor »

Татьяна5 писал(а): 05.05.2017 20:34Пока получила через $phpbb_container
Так и нужно пока что.
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12414
Стаж: 12 лет 8 месяцев
Благодарил (а): 224 раза
Поблагодарили: 3524 раза
Контактная информация:

Re: Расширения - это просто!

Сообщение Татьяна5 »

LavIgor писал(а): 25.03.2017 2:56Можно обобщать маршруты
Интересно, подобное обобщить возможно?

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

tatiana5_geotopics_usermap_controller:
    pattern: /geotopics/u/{u}
    defaults: { _controller: tatiana5.geotopics.controller:main }
    requirements:
        u: \d+

tatiana5_geotopics_output_usermap_controller:
    pattern: /geotopics/u/{u}/out/{out}
    defaults: { _controller: tatiana5.geotopics.controller:main }
    requirements:
        u: \d+
        out: json|html

tatiana5_geotopics_usermap_tag_controller:
    pattern: /geotopics/u/{u}/m/{m}
    defaults: { _controller: tatiana5.geotopics.controller:main }
    requirements:
        u: \d+
        m: \d+

tatiana5_geotopics_output_usermap_tag_controller:
    pattern: /geotopics/u/{u}/m/{m}/out/{out}
    defaults: { _controller: tatiana5.geotopics.controller:main }
    requirements:
        u: \d+
        m: \d+
        out: json|html

tatiana5_geotopics_mode_controller:
    pattern: /geotopics/m/{m}
    defaults: { _controller: tatiana5.geotopics.controller:main }
    requirements:
        m: \d+
 
tatiana5_geotopics_output_mode_controller:
    pattern: /geotopics/m/{m}/out/{out}
    defaults: { _controller: tatiana5.geotopics.controller:main }
    requirements:
        m: \d+
        out: json|html
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 9 лет 11 месяцев
Благодарил (а): 41 раз
Поблагодарили: 933 раза

Re: Расширения - это просто!

Сообщение LavIgor »

Татьяна5 писал(а): 27.05.2017 0:35подобное обобщить возможно?
Как минимум, geotopics можно вынести как префикс, а все эти правила поместить в отдельный файл.
Поскольку параметр out опционален и всегда идёт в конце, его следует задавать как опциональный параметр, задав ему значение по умолчанию в defaults.

Уже получится в 2 раза меньше правил.

На самом деле насчёт m и u стоит подумать, говорящие ли это параметры (зависит от конкретных ситуаций применения).
Суть такова, что ссылка должна оставаться понятной.
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12414
Стаж: 12 лет 8 месяцев
Благодарил (а): 224 раза
Поблагодарили: 3524 раза
Контактная информация:

Re: Расширения - это просто!

Сообщение Татьяна5 »

Ещё вопрос возник, как можно получить параметры роутинга вне контроллера?
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16354
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 535 раз
Поблагодарили: 2134 раза
Контактная информация:

Re: Расширения - это просто!

Сообщение rxu »

Смотря о чем речь. Либо через \phpbb\controller\helper, либо создавать события в контроллере, и через них.
Изображение
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12414
Стаж: 12 лет 8 месяцев
Благодарил (а): 224 раза
Поблагодарили: 3524 раза
Контактная информация:

Re: Расширения - это просто!

Сообщение Татьяна5 »

Через get_current_url() в helper? Ещё смотрела соседний resolver.php, getArguments, но не поняла до конца его назначение. Он не подойдёт?

Надо просто получить переданный параметр, по типу как request->variable было
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16354
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 535 раз
Поблагодарили: 2134 раза
Контактная информация:

Re: Расширения - это просто!

Сообщение rxu »

Не совсем ясно, что значит получить на одной странице переданный на другую страницу параметр. Что конкретно будет происходить и какой должен быть результат?
Изображение
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12414
Стаж: 12 лет 8 месяцев
Благодарил (а): 224 раза
Поблагодарили: 3524 раза
Контактная информация:

Re: Расширения - это просто!

Сообщение Татьяна5 »

Страница одна и та же, классы разные. Надо получить параметр в другом классе (в метод передать нереально, сильно запутанно выйдет)
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16354
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 535 раз
Поблагодарили: 2134 раза
Контактная информация:

Re: Расширения - это просто!

Сообщение rxu »

А код есть посмотреть?
Изображение
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16354
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 535 раз
Поблагодарили: 2134 раза
Контактная информация:

Re: Расширения - это просто!

Сообщение rxu »

Татьяна5, речь о параметрах, передаваемых в адресной строке через GET, стандартного request-a должно хватать.

Отправлено спустя 9 минут 6 секунд:
Имеется ввиду, что для роута, например,

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

pattern: /something/u/{u}/m/{m}
должно срабатывать

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

$u = $request->variable('u', 0);
$m = $request->variable('m', 0);
Изображение
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12414
Стаж: 12 лет 8 месяцев
Благодарил (а): 224 раза
Поблагодарили: 3524 раза
Контактная информация:

Re: Расширения - это просто!

Сообщение Татьяна5 »

rxu, не срабатывает

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

pattern: /geotopics/u/{u}
Ссылка (то есть параметр u передан и равен 2)
/app.php/geotopics/u/2
Контроллер

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

$this->ymsm_display->init();
Тот класс

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

public function init(){trigger_error($this->request->variable('u', 0));}
Результат: 0. Выводится значение по-умолчанию (изменяла - проверяла)

Отправлено спустя 4 минуты 10 секунд:
Если что, версия phpBB 3.1.9, проверяю на локалке
Ответить

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