gpt4 book ai didi

php - 没有收到 POST 数据 Symfony

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:44:36 25 4
gpt4 key购买 nike

由于我在共享服务器上进行生产,所以我一直在努力解决一个奇怪的问题。我有一个防火墙保护我的管理面板,将所有 url 与/admin/* 匹配。

在这个管理面板上,我发送的所有 POST 数据都没有到达 Controller 。

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]

我已经在我的 web 目录的 .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 }

Controller 函数的 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

关于php - 没有收到 POST 数据 Symfony,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23545702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com