Yii:什么可以阻止访问$ _POST数据?

时间:2012-12-18 10:38:03

标签: post yii controls

我发送一个帖子给控制器/动作(不是ajax)。

在动作中,我正在做标准的检查方式,看看它是否是一个帖子(确切的方式适用于我正在使用的其他动作)。

if( isset( $_POST['LessonForm'] ) )
{
 ...
}
else
{
   Yii::trace( "Post Not Set" );        
}

这个帖子总是没有设定。

但是,如果我在条件前添加var_dump( $_POST ); die();,我会得到:

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但不使用它。

为了测试它是否是accessControl问题,我删除了所有过滤器。

什么可以阻止此类访问?

更新

@Stu是正确的,因为它没有作为POST发送。表单方法是post。不知道怎么强迫帖子?

更新2:

问题已修复,但我仍然不确定是什么原因导致CActiveForm发送获取而非发布并仍包含发布数据。

从模型保存中删除事务后,问题就消失了(它本来就不应该存在)。

更新3:

最初的问题是actionCreate。那个问题神秘地消失了。接下来是actionEdit。呈现的视图(带有表单)是同一个文件。复制并粘贴了操作,修改了如何保存数据并获取模型而不是创建新模型。

在查看网络流量后,有一个帖子紧跟着我的代码中没有的302重定向。出于某种原因,Yii强迫302重定向进入行动。

1 个答案:

答案 0 :(得分:0)

Yii已经抽象出获取请求变量,无论他们是POST还是GET

使用:Yii::app()->request->getParam('SomeVarName', 'ADefaultValue');

获取请求变量并返回合理的默认值(如果不存在)。如果您在首先从表单中发送变量时遇到问题,那可能是另一个问题。

相关问题