Symfony не получи POST данни

Боря се със странен проблем, тъй като съм в производство на общ сървър. Имам защитна стена, която защитава администраторския ми панел, съвпадайки с всички 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 на root, но това не помогна. Бихте ли ми казали какво направихте с този файл? Благодаря   -  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