Данные POST не получены Symfony

Я борюсь со странной проблемой, так как я работаю на взаимном сервере. У меня есть брандмауэр, защищающий мою панель администратора, соответствующий всем URL-адресам с /admin/*.

На этой панели администрирования все POST-данные, которые я отправляю, не приходят на контроллер.

var_dump($this->get('request')->request->all())

дает мне пустой массив, то же самое для:

var_dump($_POST)

Это очень раздражает, так как все мои формы и функции CRUD больше не работают... Другие страницы моего сайта (не на панели администратора) работают правильно.

Консоль Chrome и FireBug показывает мне, что данные отправляются правильно.

Я думаю о проблеме с моими файлами .htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ web/$1 [QSA,L]
</IfModule>

У меня есть этот файл в моем каталоге www, чтобы указать на веб-каталог

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /web/
RewriteRule ^(.*)$ /$1 [L,R=301]

И я добавил это в .htaccess моего веб-каталога.

Мои брандмауэры:

    firewalls:
    secured_area:
        pattern:   ^/
        anonymous: ~
        form_login:
            login_path:  /login
            check_path:  /login_check
            always_use_default_target_path: true
            default_target_path:            /admin
            use_referer:                    true
        logout:
            path:   /logout
            target: /login

access_control:
    - { path: ^/admin, roles: ROLE_ADMIN }

Мой PHP-код функции контроллера:

public function testAction() {
    return new Response(var_dump($_POST));
}

Простая HTML-форма:

<form action="{{path_for_controller}}" method="POST"/>
<input type="text" name="search"/>
<input type="submit" value="send"/>
</form>

Просто $this->get('request')->get('search') дает мне null, и POST также пуст.

Спасибо за помощь, я уже совсем в отчаянии...

ИЗМЕНИТЬ

Я заметил, что это сработало несколько раз после очистки кеша, но только на мгновение


person Julian Schoemaker    schedule 08.05.2014    source источник
comment
Точно такая же проблема здесь: stackoverflow.com/questions/23540085/   -  person David B.    schedule 08.05.2014
comment
Привет, спасибо, что поделились, по крайней мере, я не единственный, у кого есть эта проблема, я буду держать вас в курсе, если мне удастся найти решение.   -  person Julian Schoemaker    schedule 08.05.2014
comment
Можете ли вы также включить свои правила брандмауэра?   -  person lsouza    schedule 08.05.2014
comment
Привет, я добавил правила брандмауэра. Спасибо за помощь   -  person Julian Schoemaker    schedule 08.05.2014
comment
Вы проверяли историю запросов в Symfony Profiler? Возможно, у вас есть какое-то перенаправление, и это причина, по которой ваши данные сообщения пусты.   -  person adam187    schedule 08.05.2014
comment
Есть ли способ включить профилировщик в производственной среде? Код состояния 200 OK при отправке данных POST на контроллер.   -  person Julian Schoemaker    schedule 09.05.2014
comment
Привет, я решил проблему, которая на самом деле была проблемой конфигурации сервера. Вы можете увидеть это здесь: stackoverflow.com/questions/23540085/   -  person David B.    schedule 12.05.2014
comment
Привет, Дэвид, я тоже на OVH, я удалил .ovhconfig в корне, но это не помогло. Не могли бы вы рассказать мне, что вы сделали с этим файлом? Спасибо   -  person Julian Schoemaker    schedule 13.05.2014
comment
Я фактически удалил его и установил SetEnv PHP_VER 5_4 в файле .htaccess. Почистил кеш и все заработало на самом деле очень хорошо   -  person David B.    schedule 13.05.2014


Ответы (2)


Я столкнулся с этой проблемой некоторое время назад. Но моей проблемой было перенаправление (перезапись). Форма отправлялась по правильному URL-адресу, но переписывание перенаправляло ее в другое место, а перенаправление не переносило данные публикации.

В консоли разработчика Chrome, если вы отметите Preserve log, вы сможете его увидеть.

Я думаю, что в вашем случае это вызывает проблемы

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /web/
RewriteRule ^(.*)$ /$1 [L,R=301]

Лучше всего настроить Symfony2, я бы сказал, установить DocumentRoot в каталог web, чем делать это через .htaccess

person Broncha    schedule 09.05.2014
comment
Привет, извините, что так долго не отвечал, я попробую это завтра и дам вам знать, если это сработает. Спасибо! - person Julian Schoemaker; 13.05.2014
comment
Я попробовал несколько конфигураций с моим htaccess, но ни одна из них не сработала. Кроме того, в журналах сохранения не было никаких перенаправлений, похоже, проблема была не в этом. - person Julian Schoemaker; 13.05.2014

Попробуйте print_r($_GET) в PHP на странице, над которой вы работаете.

person a coder    schedule 08.05.2014
comment
Это дает мне: Массив () 1 - person Julian Schoemaker; 09.05.2014
comment
переменные выходят через $_POST? - person a coder; 09.05.2014
comment
$_POST всегда пуст, на моем контроллере я получаю запрос метода POST, но никаких данных. Консоль Chrome показывает мне, что данные формы отправляются - person Julian Schoemaker; 09.05.2014
comment
Как обрабатывается форма? - person a coder; 09.05.2014
comment
Да, массив пустой. Большая часть моих данных отправляется с помощью Ajax, но даже когда я пробую очень простую форму с одним вводом и кнопкой отправки, на стороне контроллера ничего не получено. - person Julian Schoemaker; 09.05.2014
comment
Я бы просто протестировал что-то действительно простое, чтобы заглянуть внутрь $_POST. я отредактировал свой первый пост - person Julian Schoemaker; 09.05.2014
comment
Где переменные и HTML в программе? - person a coder; 09.05.2014
comment
У меня есть разные формы в моем приложении, но большинство из них довольно простые, например, просто исследовательский ввод для фильтрации моей таблицы результатов. Я обновил свой первый пост, чтобы добавить его. - person Julian Schoemaker; 09.05.2014