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

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

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
UncleAndy
phpBB 1.4.1
Сообщения: 44
Стаж: 10 лет 2 месяца
Благодарил (а): 7 раз

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

Сообщение UncleAndy »

rxu, спасибо за ответ.

Тогда вот такой дополнительный вопрос - возможно-ли в процесс авторизации через расширение добавить дополнительную страницу? Что-бы, например, при валидации сессии если соблюдаются некоторые условия, выдавать эту страницу пользователю?

Просто все примеры что я видел завязаны на стандартную процедуру. И я нигде в коде не вижу никаких редиректов.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16947
Стаж: 18 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 549 раз
Поблагодарили: 1700 раз

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

Сообщение rxu »

UncleAndy писал(а):возможно-ли в процесс авторизации через расширение добавить дополнительную страницу?
Возможно. Тут зависит от потребностей. Можно реализовать с помощью контроллеров (см. Создание страниц в стиле конференции), либо простую всплывашку, в общем, вариантов масса. Сказать точнее, не имея конкретного кода, сложно.
Изображение
UncleAndy
phpBB 1.4.1
Сообщения: 44
Стаж: 10 лет 2 месяца
Благодарил (а): 7 раз

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

Сообщение UncleAndy »

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

Делаю так:

ext/gplvote/signdoc/controller/actions.php:

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

<?php

namespace gplvote\signdoc\controller;

use Symfony\Component\HttpFoundation\Response;

class actions
{
...
        public function __construct(\phpbb\config\config $config, \phpbb\request\request_interface $request, \phpbb\pagination $pagination, \phpbb\db\driver\driver_interface $db, \phpbb\auth\auth $auth, \php
bb\template\template $template, \phpbb\user $user, \phpbb\controller\helper $helper, $phpbb_root_path, $php_ext, $table_prefix)
        {
...
        }

        public function getdoc() {
            return new Response('TEST getdoc', 200);
        }

        public function sign() {
            return new Response('TEST sign', 200);
        }

        public function register() {
            return new Response('TEST register', 200);
        }
}
ext/gplvote/signdoc/config/services.yml:

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

services:
    gplvote.signdoc.listener:
        class: gplvote\signdoc\event\listener
        tags:
            - { name: event.listener }
    gplvote.signdoc.controller:
        class: gplvote\signdoc\controller\actions
        arguments:
            - @config
            - @request
            - @pagination
            - @dbal.conn
            - @auth
            - @template
            - @user
            - @controller.helper
            - %core.root_path%
            - %core.php_ext%
            - %core.table_prefix%
ext/gplvote/signdoc/config/routing.yml:

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

gplvote_signdoc_getdoc:
    pattern: /sd/getdoc
    defaults: { _controller: gplvote.signdoc.controller:getdoc }
gplvote_signdoc_sign:
    pattern: /sd/sign
    defaults: { _controller: gplvote.signdoc.controller:sign }
gplvote_signdoc_register:
    pattern: /sd/reg
    defaults: { _controller: gplvote.signdoc.controller:register }
Насколько я понимаю, этого должно быть достаточно для того, что-бы обрабатывать обращения по путям /sd/getdoc? Но после включения расширения в админском разделе у меня по этим путям все-равно выдается "404". :(

Подскажите, плиз, что я неправильно делаю?
Аватара пользователя
xisp
phpBB 3.0.0 RC7
Сообщения: 1798
Стаж: 12 лет 11 месяцев
Благодарил (а): 97 раз
Поблагодарили: 91 раз
Забанен: Бессрочно

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

Сообщение xisp »

UncleAndy писал(а):Но после включения расширения в админском разделе у меня по этим путям все-равно выдается "404".
Перенаправления в админке включены? Реврайты настроены? Расширение с правилами работает?
phpBBex
UncleAndy
phpBB 1.4.1
Сообщения: 44
Стаж: 10 лет 2 месяца
Благодарил (а): 7 раз

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

Сообщение UncleAndy »

Перенаправления в админке включены? Реврайты настроены? Расширение с правилами работает?
Я ориентировался вот на этот пример: Создание страниц в стиле конференции
В нем mod_rewrite не упоминается. Зачем его использовать в контексте расширения?

Что за "правила"?

Отвечая на вопросы:
1. Перенаправления отключены.
2. Реврайты НЕ настроены.
3. Про "правила" не понял.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 18 лет 2 месяца
Откуда: Калининград не Кенигсберг
Благодарил (а): 36 раз
Поблагодарили: 1526 раз

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

Сообщение Sheer »

UncleAndy писал(а):Я ориентировался вот на этот пример
Ну тогда

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

pattern: /sd/getdoc
неправильно.
UncleAndy писал(а):Что за "правила"?
Если у вас сервер под ISS, тогда нужно настраивать web.config --> Расширения - ошибка 404 на IIS сервере
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
UncleAndy
phpBB 1.4.1
Сообщения: 44
Стаж: 10 лет 2 месяца
Благодарил (а): 7 раз

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

Сообщение UncleAndy »

неправильно.
Второй уровень неправильно использовать? Сделал с один уровнем - точь в точь как в примере, но все-равно выдается 404.
Если у вас сервер под ISS
Нет, у меня Apache на ubuntu.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16947
Стаж: 18 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 549 раз
Поблагодарили: 1700 раз

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

Сообщение rxu »

UncleAndy писал(а):1. Перенаправления отключены.
2. Реврайты НЕ настроены.
В данном случае страницы будут доступны только как app.php/sd/getdoc и т.п.
Изображение
UncleAndy
phpBB 1.4.1
Сообщения: 44
Стаж: 10 лет 2 месяца
Благодарил (а): 7 раз

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

Сообщение UncleAndy »

В данном случае страницы будут доступны только как app.php/sd/getdoc и т.п.
Вот! Вот теперь понятно. Всем спасибо! После правильной настройки mod_rewrite заработало как полагается. :)
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16947
Стаж: 18 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 549 раз
Поблагодарили: 1700 раз

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

Сообщение rxu »

UncleAndy писал(а):заработало как полагается
Не совсем. если добавить в конце слэш, будет 404 :)
Посмотрите, как реализован трюк со слэшем тут https://github.com/rxu/thanks_for_posts ... outing.yml
Изображение
UncleAndy
phpBB 1.4.1
Сообщения: 44
Стаж: 10 лет 2 месяца
Благодарил (а): 7 раз

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

Сообщение UncleAndy »

Не совсем. если добавить в конце слэш, будет 404 :)
Посмотрите, как реализован трюк со слэшем тут https://github.com/rxu/thanks_for_posts ... outing.yml
Интересный нюанс. Спасибо.
В данном случае это не важно, т.к. URL для обращения сюда будут формироваться автоматически. И слэшэй там не будет.

Мне в связи с этой задачей больше интересно как мне из метода контроллера вернуть свой Content-Type? Предполагается что вот эти методы у меня будут возвращать application/json.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16947
Стаж: 18 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 549 раз
Поблагодарили: 1700 раз

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

Сообщение rxu »

Не понял вопроса, но, судя по смыслу - отправить в заголовке потока? См. /includes/functions.php function page_header() событие core.page_header_after, где можно поменять заголовки $http_headers.
Изображение
UncleAndy
phpBB 1.4.1
Сообщения: 44
Стаж: 10 лет 2 месяца
Благодарил (а): 7 раз

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

Сообщение UncleAndy »

Оказалось, все проще.

В методе контроллера в Response можно передавать и хидеры:

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

return new Response('TEST getdoc', 200, array('Content-Type' => 'application/json'));
Аватара пользователя
Алг
Former team member
Сообщения: 933
Стаж: 12 лет 8 месяцев
Откуда: Израиль
Благодарил (а): 72 раза
Поблагодарили: 248 раз

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

Сообщение Алг »

rxu писал(а):Надо прописать класс как сервис и использовать зависимости.
могу ли я прописать класс includes/acp/acp_forums.php как сервис и получить доступ к его функциям из контроллера расширения?
Если да, то как должна выглядеть строка?
Там упёртость и инертность, могут, кстати, в морду дать.
А ты проявляй интеллигентность, постарайся убеждать...

Т. Шаов
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16947
Стаж: 18 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 549 раз
Поблагодарили: 1700 раз

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

Сообщение rxu »

С админскими модулями так не выйдет. Надо подключать файл с классом и инициализироаать его объект стандартным способом.
Изображение

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