Расширения - это просто!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение

-
- phpBB 1.4.1
- Сообщения: 44
- Стаж: 10 лет 2 месяца
- Благодарил (а): 7 раз
Re: Расширения - это просто!
rxu, спасибо за ответ.
Тогда вот такой дополнительный вопрос - возможно-ли в процесс авторизации через расширение добавить дополнительную страницу? Что-бы, например, при валидации сессии если соблюдаются некоторые условия, выдавать эту страницу пользователю?
Просто все примеры что я видел завязаны на стандартную процедуру. И я нигде в коде не вижу никаких редиректов.
Тогда вот такой дополнительный вопрос - возможно-ли в процесс авторизации через расширение добавить дополнительную страницу? Что-бы, например, при валидации сессии если соблюдаются некоторые условия, выдавать эту страницу пользователю?
Просто все примеры что я видел завязаны на стандартную процедуру. И я нигде в коде не вижу никаких редиректов.
-
- phpBB Guru
- Сообщения: 16947
- Стаж: 18 лет 11 месяцев
- Откуда: Красноярск
- Благодарил (а): 549 раз
- Поблагодарили: 1700 раз
Re: Расширения - это просто!
Возможно. Тут зависит от потребностей. Можно реализовать с помощью контроллеров (см. Создание страниц в стиле конференции), либо простую всплывашку, в общем, вариантов масса. Сказать точнее, не имея конкретного кода, сложно.UncleAndy писал(а):возможно-ли в процесс авторизации через расширение добавить дополнительную страницу?
-
- phpBB 1.4.1
- Сообщения: 44
- Стаж: 10 лет 2 месяца
- Благодарил (а): 7 раз
Re: Расширения - это просто!
Итак... Пытаюсь начать делать свое расширение. Для него необходимо создать несколько роутов, на которые будут передаваться данные внешним приложением.
Делаю так:
ext/gplvote/signdoc/controller/actions.php:
ext/gplvote/signdoc/config/services.yml:
ext/gplvote/signdoc/config/routing.yml:
Насколько я понимаю, этого должно быть достаточно для того, что-бы обрабатывать обращения по путям /sd/getdoc? Но после включения расширения в админском разделе у меня по этим путям все-равно выдается "404". 
Подскажите, плиз, что я неправильно делаю?
Делаю так:
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);
}
}
Код: Выделить всё
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%
Код: Выделить всё
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 }

Подскажите, плиз, что я неправильно делаю?
-
- phpBB 3.0.0 RC7
- Сообщения: 1798
- Стаж: 12 лет 11 месяцев
- Благодарил (а): 97 раз
- Поблагодарили: 91 раз
- Забанен: Бессрочно
Re: Расширения - это просто!
Перенаправления в админке включены? Реврайты настроены? Расширение с правилами работает?UncleAndy писал(а):Но после включения расширения в админском разделе у меня по этим путям все-равно выдается "404".
phpBBex
-
- phpBB 1.4.1
- Сообщения: 44
- Стаж: 10 лет 2 месяца
- Благодарил (а): 7 раз
Re: Расширения - это просто!
Я ориентировался вот на этот пример: Создание страниц в стиле конференцииПеренаправления в админке включены? Реврайты настроены? Расширение с правилами работает?
В нем mod_rewrite не упоминается. Зачем его использовать в контексте расширения?
Что за "правила"?
Отвечая на вопросы:
1. Перенаправления отключены.
2. Реврайты НЕ настроены.
3. Про "правила" не понял.
-
- Former team member
- Сообщения: 12113
- Стаж: 18 лет 2 месяца
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 36 раз
- Поблагодарили: 1526 раз
Re: Расширения - это просто!
Ну тогдаUncleAndy писал(а):Я ориентировался вот на этот пример
Код: Выделить всё
pattern: /sd/getdoc
Если у вас сервер под ISS, тогда нужно настраивать web.config --> Расширения - ошибка 404 на IIS сервереUncleAndy писал(а):Что за "правила"?
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
-
- phpBB 1.4.1
- Сообщения: 44
- Стаж: 10 лет 2 месяца
- Благодарил (а): 7 раз
Re: Расширения - это просто!
Второй уровень неправильно использовать? Сделал с один уровнем - точь в точь как в примере, но все-равно выдается 404.неправильно.
Нет, у меня Apache на ubuntu.Если у вас сервер под ISS
-
- phpBB Guru
- Сообщения: 16947
- Стаж: 18 лет 11 месяцев
- Откуда: Красноярск
- Благодарил (а): 549 раз
- Поблагодарили: 1700 раз
Re: Расширения - это просто!
В данном случае страницы будут доступны только какUncleAndy писал(а):1. Перенаправления отключены.
2. Реврайты НЕ настроены.
app.php/sd/getdoc
и т.п.-
- phpBB 1.4.1
- Сообщения: 44
- Стаж: 10 лет 2 месяца
- Благодарил (а): 7 раз
Re: Расширения - это просто!
Вот! Вот теперь понятно. Всем спасибо! После правильной настройки mod_rewrite заработало как полагается.В данном случае страницы будут доступны только как app.php/sd/getdoc и т.п.

-
- phpBB Guru
- Сообщения: 16947
- Стаж: 18 лет 11 месяцев
- Откуда: Красноярск
- Благодарил (а): 549 раз
- Поблагодарили: 1700 раз
Re: Расширения - это просто!
Не совсем. если добавить в конце слэш, будет 404UncleAndy писал(а):заработало как полагается

Посмотрите, как реализован трюк со слэшем тут https://github.com/rxu/thanks_for_posts ... outing.yml
-
- phpBB 1.4.1
- Сообщения: 44
- Стаж: 10 лет 2 месяца
- Благодарил (а): 7 раз
Re: Расширения - это просто!
Интересный нюанс. Спасибо.Не совсем. если добавить в конце слэш, будет 404
Посмотрите, как реализован трюк со слэшем тут https://github.com/rxu/thanks_for_posts ... outing.yml
В данном случае это не важно, т.к. URL для обращения сюда будут формироваться автоматически. И слэшэй там не будет.
Мне в связи с этой задачей больше интересно как мне из метода контроллера вернуть свой Content-Type? Предполагается что вот эти методы у меня будут возвращать application/json.
-
- phpBB Guru
- Сообщения: 16947
- Стаж: 18 лет 11 месяцев
- Откуда: Красноярск
- Благодарил (а): 549 раз
- Поблагодарили: 1700 раз
Re: Расширения - это просто!
Не понял вопроса, но, судя по смыслу - отправить в заголовке потока? См.
/includes/functions.php
function page_header()
событие core.page_header_after
, где можно поменять заголовки $http_headers
.-
- phpBB 1.4.1
- Сообщения: 44
- Стаж: 10 лет 2 месяца
- Благодарил (а): 7 раз
Re: Расширения - это просто!
Оказалось, все проще.
В методе контроллера в Response можно передавать и хидеры:
В методе контроллера в Response можно передавать и хидеры:
Код: Выделить всё
return new Response('TEST getdoc', 200, array('Content-Type' => 'application/json'));
-
- Former team member
- Сообщения: 933
- Стаж: 12 лет 8 месяцев
- Откуда: Израиль
- Благодарил (а): 72 раза
- Поблагодарили: 248 раз
Re: Расширения - это просто!
могу ли я прописать класс includes/acp/acp_forums.php как сервис и получить доступ к его функциям из контроллера расширения?rxu писал(а):Надо прописать класс как сервис и использовать зависимости.
Если да, то как должна выглядеть строка?
Там упёртость и инертность, могут, кстати, в морду дать.
А ты проявляй интеллигентность, постарайся убеждать...
Т. Шаов
А ты проявляй интеллигентность, постарайся убеждать...
Т. Шаов
-
- phpBB Guru
- Сообщения: 16947
- Стаж: 18 лет 11 месяцев
- Откуда: Красноярск
- Благодарил (а): 549 раз
- Поблагодарили: 1700 раз
Re: Расширения - это просто!
С админскими модулями так не выйдет. Надо подключать файл с классом и инициализироаать его объект стандартным способом.