我正在向控制器/操作(不是 ajax)发送帖子。
在动作内部,我正在执行检查它是否是帖子的标准方式(确切的方式适用于我正在使用的其他动作)。
if( isset( $_POST['LessonForm'] ) )
{
...
}
else
{
Yii::trace( "Post Not Set" );
}
并且帖子始终未设置。
但是,如果我var_dump( $_POST ); die();
在条件前面加上 a,我会得到:
array(2) { ["LessonForm"]=> array(3) { ["title"]=> string(4) "test" ["shortDescription"]=> string(4) "test" ["image"]=> string(0) "" } ["yt1"]=> string(0) "" }
所以帖子显然在那里。此外,
foreach( $_POST as $key => $value )
{
echo( $key.'<br>' );
}
我明白了:
LessonForm
yt1
进一步表明该职位在那里。
尝试在 $_POST 中使用变量时,它不存在。如果在 foreach 循环中访问它并将其分配给变量,我可以对变量进行 vardump 但不使用它。
为了测试它是否是一个访问控制问题,我删除了所有过滤器。
什么可以阻止这样的访问?
更新:
@Stu 是正确的,因为它不是作为 POST 发送的。表单方法是post。不知道如何强制发布?
更新 2:
问题已解决,但我仍然不确定是什么导致 CActiveForm 发送 get 而不是 post 并且仍然包含 post 数据。
从模型保存中删除事务后,问题就消失了(它本来就不应该存在)。
更新 3:
最初的问题是 actionCreate。这个问题神秘地消失了。接下来是一个动作编辑。呈现的视图(带有表单)是同一个文件。该操作被复制并粘贴,并修改了数据的保存方式和获取模型,而不是制作新模型。
查看网络流量后,有一个帖子紧跟在我的代码中没有的 302 重定向。出于某种原因,Yii 强制执行 302 重定向以执行操作。