没有POST数据收到Symfony

时间:2014-05-08 15:10:40

标签: php .htaccess symfony post production-environment

我正在努力解决一个奇怪的问题,因为我在共享服务器上进行制作。 我有一个防火墙保护我的管理面板与所有的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目录中有这个文件指向web目录

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-&gt; get(&#39; request&#39;) - &gt; get(&#39; search&#39;)给我null,POST也为空。

感谢您的帮助,我真的很绝望......

修改

我注意到在清除缓存后它只运行了几次

2 个答案:

答案 0 :(得分:2)

我前段时间遇到过这个问题。但我的问题是重定向(重写)。该表单已提交到正确的URL,但重写将其重定向到另一个位置,重定向不会随附数据。

在Chrome开发者控制台中,如果您选中Preserve log,那么您将能够看到它。

我认为在你的情况下这会导致问题

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

最好设置Symfony2,我会说,将DocumentRoot设置为web目录,而不是通过.htaccess

进行设置。

答案 1 :(得分:0)

在您正在处理的页面上尝试PHP中的print_r($_GET)