我坚持这个。原来我正在使用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
)
有什么想法吗?
答案 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));
}
}