Я борюсь со странной проблемой, так как я нахожусь на совместном сервере. У меня есть брандмауэр, защищающий мою панель администратора, соответствующую всем 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 также пуст.
Спасибо за вашу помощь, я действительно отчаянно …
РЕДАКТИРОВАТЬ
Я заметил, что он работал несколько раз после очистки кеша, но только на мгновение
Я столкнулся с этим вопросом некоторое время назад. Но моя проблема была перенаправлена (переписать). Форма отправляется по правому URL-адресу, но переписывание перенаправляло ее в другое место, а перенаправление не переносится по почтовым данным.
В Chrome-консоли разработчика, если вы проверите Preserve log
, вы сможете увидеть его.
Я думаю, что в вашем случае это вызывает проблемы
RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /web/ RewriteRule ^(.*)$ /$1 [L,R=301]
Лучше всего настроить Symfony2, я бы сказал, установить DocumentRoot
в web
каталог, чем делать это через .htaccess
Попробуйте print_r($_GET)
в PHP на странице, над которой вы работаете.