获取$ _POST参数时出错

时间:2011-07-16 14:37:25

标签: php post parameters yii

我坚持这个。原来我正在使用JUI对话框让用户输入所需的密码。这是JUI对话框调用的视图代码:

<div class="passwordRequestDialog">
<?php 
$form=$this->beginWidget('CActiveForm', array(
                                'id'=>'requestpassword-form',
                                'enableAjaxValidation'=>false,
                                'clientOptions'=>array('validateOnSubmit'=>false),
                                'htmlOptions'=>array('enctype'=>'multipart/form-data'),
                        )); 
?>

<div class="row">   
    <?php echo CHtml::activeHiddenField($model,'idLiga_hidden',array('value'=>$model->id)); ?>
    <?php echo CHtml::label("Ingrese la contrasenia de la liga $model->id?",false, array('style'=>'{font-weight:bold;font-size:12px;}')); ?>
    <?php echo CHtml::activePasswordField($model,'password',array('value'=>'')); ?>
</div>

<div class="row buttons">
    <?php echo CHtml::submitButton("Guardar"); ?>
</div> 

<?php $this->endWidget(); ?>
</div>

然而,当我点击提交按钮时,我可以看到firebug的帖子参数:

此LigasDeAmigos%5BidLiga_hidden%5D = 2&amp; LigasDeAmigos%5Bpassword%5D = typedInPassword

出于绝望,我试图以多种不同的方式获取post参数:

$password = $_POST['this']['password'];
$password = $_POST['this']['LigasDeAmigos']['password'];
$password = $_POST['this']['LigasDeAmigos[password]'];

它们都不起作用......第一个返回的值始终相同:“L”。我假设它从整个“this”参数中得到第一个字母。第二个给出错误,第三个错误。任何帮助都非常欢迎!

按照@Jon的建议

编辑 print_r($ _ REQUEST)输出

Array
(
    [idLiga] => 2
    [this] => LigasDeAmigos%5BidLiga_hidden%5D=2&LigasDeAmigos%5Bpassword%5D=pass
)

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

好吧,我不知道为什么参数会像这样进入(没有完成这个特定的场景)所以我不能建议一个解决问题核心的解决方案(假设问题)。

但是,您可以自己解析参数:

// Normally this would be $form = $_POST['this'], but for the example...
$form = 'LigasDeAmigos%5BidLiga_hidden%5D=2&LigasDeAmigos%5Bpassword%5D=pass';

parse_str($form, $vars);
print_r($vars);

// You can now access the variables as in:
$id = $vars['idLiga_hidden'];
$password = $vars['pass'];

<强> See it in action

答案 1 :(得分:1)

我会将它绑定到model

例如,在视图中使用您的字段,您的模型将类似于:

class TestForm extends CFormModel
{

    public $id;
    public $password;
    public $idLiga_hidden;

    public function rules ()
    {
        return array (
            array ('password', 'required'),
            array ('id, idLiga_hidden', 'verify'),
        );
    }

    public function verify ($attribute, $params)
    {
        //$this->addError('idLiga_hidden','Incorrect dumaflache');
    }

}

请注意,您需要为属性分配定义一些“规则”才能生效。 然后,您可以在控制器中引用该模型:

public function actionTest ()
{
    if (isset ($_POST['TestForm']))
    {
        $model = new TestForm();
        $model->attributes = $_POST['TestForm'];
        echo $model->password;
    }
    else
    {
        $model = new TestForm();
        $this->render ('test', array ('model' => $model));
    }
}