我正在努力解决一个奇怪的问题,因为我在共享服务器上进行制作。 我有一个防火墙保护我的管理面板与所有的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也为空。
感谢您的帮助,我真的很绝望......
修改
我注意到在清除缓存后它只运行了几次
答案 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)
。