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

Напомните v2

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

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Vlad__
phpBB 2.0.7
Сообщения: 566
Стаж: 7 лет 3 месяца
Благодарил (а): 283 раза
Поблагодарили: 65 раз

Напомните v2

Сообщение Vlad__ »

Делаю ajax запрос. В обычный файл php по $_POST все проходит нормально. Если же код php сделать в виде функции в классе с routing.yml
и services.yml, то передача данных типа $var = $request->variable('var', 0) почему-то не срабатывает. Может не там задаю переменные? Не совсем понимаю логику объектного программирования. Где можно взглянуть на примеры и должно ли это работать?
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

Re: Напомните v2

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

POST'ом должно срабатывать
Там с GET переменными свои заморочки (т.к. которые через слеш перечисляются - не GET-переменные)
Vlad__
phpBB 2.0.7
Сообщения: 566
Стаж: 7 лет 3 месяца
Благодарил (а): 283 раза
Поблагодарили: 65 раз

Re: Напомните v2

Сообщение Vlad__ »

Чисто РOST в форумном движке не работает. Для безопасности сделан request. Я наверное непонятно описал вопрос. Если сделать просто php файл, без привязки к форуму, то срабатывает обычным роst-ом. Если сделать php типа форумным (или как правильно) с классом, роутингом и сервисами, то для обработки и передачи данных только request, который у меня не получается сделать рабочим.
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 14 лет 4 месяца
Благодарил (а): 43 раза
Поблагодарили: 506 раз
Контактная информация:

Re: Напомните v2

Сообщение Pazh »

Vlad__ писал(а): 03.08.2018 16:38 $var = $request->variable('var', 0)
потому что должно быть как минимум $var = $this->request->variable('var', 0); и при этом в конструкторе нужно определить $var = $this->request
Откройте почти любое готовое расширение и гляньте как там прописан request в servise.yml, в контроллере и как все это вызывается из контроллера, который прописан в route.yml
Помощь в ЛС/email только за WM или ЮMoney
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

Re: Напомните v2

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

Vlad__ писал(а): 03.08.2018 18:54request
Это те же самые get/post
Vlad__
phpBB 2.0.7
Сообщения: 566
Стаж: 7 лет 3 месяца
Благодарил (а): 283 раза
Поблагодарили: 65 раз

Re: Напомните v2

Сообщение Vlad__ »

Pazh писал(а): 03.08.2018 19:51 должно быть как минимум
У меня все так и есть. Сокращенно просто написал без $this. Не работает. Вот мой совершенно примерный код:
В скрипте.

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

$.post("./test.php", {'login':'1111', 'password':'2222'},
        function(data) {
        $('#test').html(data);
        });
В пхп:

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

namespace ...\...\controller;

use Symfony\Component\HttpFoundation\Response;

class main
{
    protected $request;
    protected $db;
    protected $user;
    protected $table_prefix;

    public function __construct(\phpbb\request\request_interface $request, \phpbb\db\driver\driver_interface $db, \phpbb\user $user, $table_prefix)
    {
        $this->request = $request;
        $this->db = $db;
        $this->user = $user;
        $this->table_prefix = $table_prefix; 
    }

    public function test()
    { 
    $login=$this->request->variable('login', 0);
    $pass=$this->request->variable('password', 0);
    if($login=="1111" && $pass=="2222"){
        echo "Авторизация прошла успешно";
    }
    else{
        echo "Неверно введен логин или пароль";
    }
}
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

Re: Напомните v2

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

namespace странный. Или расширение называется ...? (Точки могут привести не к тому, к чему хочется)

В services.yml и в routing.yml что у вас?
Vlad__
phpBB 2.0.7
Сообщения: 566
Стаж: 7 лет 3 месяца
Благодарил (а): 283 раза
Поблагодарили: 65 раз

Re: Напомните v2

Сообщение Vlad__ »

Татьяна5 писал(а): 03.08.2018 23:54 namespace странный
То я так скрыл название ))
Дальше точки и ххх тоже сокрытие.
Татьяна5 писал(а): 03.08.2018 23:54 В services.yml и в routing.yml что у вас?

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

xxx.xxx.xxx:
        class: ...\...\controller\main
        arguments:
            - @request
            - @dbal.conn
            - @user
            - %core.table_prefix%

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

xxx.xxx.xxx:
    pattern: /test.php
    defaults: { _controller: xxx.xxx.xxx:test }
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

Re: Напомните v2

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

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

xxx.xxx.xxx:
        class: ...\...\controller\main
        arguments:
            - '@request'
            - '@dbal.conn'
            - '@user'
            - '%core.table_prefix%'
(Иногда это имеет значение)

Отправлено спустя 1 час 19 минут 41 секунду:
Ещё причина может быть в том, что отправляется строка, а в php ожидается число (второй параметр 0)

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

    $login=$this->request->variable('login', '');
    $pass=$this->request->variable('password', '');
Отправлено спустя 1 минуту 54 секунды:
И как другие страницы расширений работают, без app.php в адресе?
Vlad__
phpBB 2.0.7
Сообщения: 566
Стаж: 7 лет 3 месяца
Благодарил (а): 283 раза
Поблагодарили: 65 раз

Re: Напомните v2

Сообщение Vlad__ »

Татьяна5 писал(а): 04.08.2018 2:14 Ещё причина может быть в том, что отправляется строка, а в php ожидается число (второй параметр 0)
Менял и так и так. Эффекта нет.

Отправлено спустя 29 минут 44 секунды:
Все, допер! Всем спасибо! Забыл про return в контроллере.
Ответить

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