Тема: Проблема с получением массива $_POST в блочном контроллере.

Здравствуйте.

Пишу модуль и никак не могу получить значения ушедших через форму данных (метод POST, поля hidden) в блочном контроллере. Я перепробовал много способов, перерыл всю документацию и stack overflow - вчера целый день потратил. Максимум, чего удалось добиться - это пустой array().

Я понимаю, что скорее всего, это я не вижу очевидного. Но тем не менее, прошу у вас подсказки. Работа встала(

Заранее спасибо.

Повысить оценку Понизить оценку

2

Re: Проблема с получением массива $_POST в блочном контроллере.

Получение переменных из внешних источников GET, POST, COOKIE, SERVER, REQUEST происходит через класс \RS\Http\Request.
его экземпляр доступен в любом контроллере через $this->url

Например:

class MyController extends \RS\Controller\Block
{

function actionIndex() {
    $post_var = $this->url->post('myvar', TYPE_STRING, 'default_value');
    $get_var = $this->url->get('myvar', TYPE_STRING, 'default_value');
    $request_var = $this->url->request('myvar', TYPE_STRING, 'default_value');
    $server_var = $this->url->server('myvar', TYPE_STRING, 'default_value');
}
}

вторым аргументом обязательно идет константа типа переменной. Существуют типы:
TYPE_STRING
TYPE_INTEGER
TYPE_ARRAY
TYPE_BOOLEAN
TYPE_FLOAT
TYPE_OBJECT
TYPE_MIXED

Повысить оценку Понизить оценку

3

Re: Проблема с получением массива $_POST в блочном контроллере.

Спасибо большое.

А я заново пробовал создать экземпляр \RS\Http\Request и без 'url' пробовал, вот и не получалось. В доках, по-моему, про 'url' ничего не сказано.
Неплохо было бы такие не очевидные мелочи со временем прописать в документации, например что объект картинки можно получить через __image - я бы не нашел, наверное, без помощи Александра, и так далее...

Слава богу что вы на связи)

Повысить оценку Понизить оценку

4

Re: Проблема с получением массива $_POST в блочном контроллере.

Еще вопрос: расскажите пожалуйста как включить логирование и куда он пишет логи.
Я пробовал создать _local_settings.php в корне сайта вот с таким содержимым:

<?php
\Setup::$DETAILED_EXCEPTION = true;

По-моему ничего не изменилось. Мне бы включить максимальный уровень вывода ошибок на время разработки.

Повысить оценку Понизить оценку

Re: Проблема с получением массива $_POST в блочном контроллере.

А я заново пробовал создать экземпляр \RS\Http\Request и без 'url' пробовал, вот и не получалось. В доках, по-моему, про 'url' ничего не сказано.

Надо вот так:

\RS\Http\Request::commonInstance() //Получим сам объект

Вот простой пример:

$myvar = \RS\Http\Request::commonInstance()->request('имя моей переменной $_REQUEST', 'тип', 'значение по умолчанию');

Т.е.
$this->url = \RS\Http\Request::commonInstance()

Re: Проблема с получением массива $_POST в блочном контроллере.

Еще вопрос: расскажите пожалуйста как включить логирование и куда он пишет логи.
Я пробовал создать _local_settings.php в корне сайта вот с таким содержимым:

<?php
\Setup::$DETAILED_EXCEPTION = true;

По-моему ничего не изменилось. Мне бы включить максимальный уровень вывода ошибок на время разработки.

Для максимального вывода ошибок надо сделать сделать полностью как сказано здесь:
Как включить отображение ошибок

Как только сделаете ошибку, Вам всё выведется.

У нас есть возможность записи в лог файл, но зачем он Вам и что туда хотите получить?