问题:strcmp()期望参数2为字符串,给定数组
用户更新时出现此错误消息。用户创建工作正常。我该如何解决这个问题?
我创建了一个radiobuttonlist,如下所示
<div style="height:140px; padding-left: 20px;">
<div>
<?php echo $form->labelEx($model,'role'); ?>
<?php
echo $form->radioButtonList($model, 'role', $roles,
array('labelOptions'=>array('style'=>'display:inline; padding-right: 1em; vertical-align:middle '), // add this code
));
?>
<?php echo $form->error($model,'role'); ?>
</div>
</div>
$ roles来自控制器
if(Yii::app()->user->isSuperuser)
{
$all_roles=new RAuthItemDataProvider('roles', array('type'=>2, ));
$roles = $all_roles->fetchData();
}else
$roles = Authitem::model()->findAll('type=2 And name<>:name',array(':name'=>'Superadmin'));
$original_roles = Authassignment::model()->findAll('userid=:userid',array(':userid'=>$model->id));
$model->role = CHtml::listData($original_roles, 'itemname', 'itemname');
$roles = CHtml::listData($roles,'name','name');
//$model->role = array_merge($original_roles, $roles);
//$model->role = (array)$original_roles;
//var_dump($model->role);
//die;
$this->render('update',array(
'model'=>$model,
'profile'=>$profile,
'roles'=>$roles,
//'department'=>$department,
//'designation'=>$designation,
'original_roles'=>$original_roles,
));
当我使用$ form-&gt; checkBoxList时,它正常工作。
答案 0 :(得分:0)
调用RadioButtonList()时设置的第四个参数应该是键值对的数组,而不是数组数组。我不确定您是否可以定义'labelOptions',因为它不是HTML标记。
发生错误是因为Yii期望您的最终数组是键值对,而是看到'labelOptions'是一个数组,而不是一个字符串。
尝试类似的事情;
echo $form->radioButtonList($model, 'role', $roles,
array('style'=>'display:inline; padding-right: 1em; vertical-align:middle '),
);
甚至更好地使用css;
.myRadioButtonList { display:inline; padding-right: 1em; vertical-align:middle }
并在视图中:
echo $form->radioButtonList($model, 'role', $roles,
array('class'=>'myRadioButtonList'),
);
答案 1 :(得分:0)
当您使用$form->radioButtonList()
生成按钮列表时,yii会生成一个额外的隐藏输入字段。如果您以标准方式提交表单,那该工作正常。
但是,当您为ajax提交序列化表单时,.serialize()
会选择隐藏的<input>
。然后,它具有所述单选按钮字段的两个值,并继续创建数组而不是单个值。
这会导致错误: strcmp()期望参数2为字符串,给定数组
最好的解决方案是阻止yii生成隐藏的<input>
。这可以通过添加
array('uncheckValue'=>NULL)
作为HTMLoption。例如:
$form->radioButtonList($model,'viewer_format', $options, array('uncheckValue'=>NULL));
答案 2 :(得分:-1)
您的渲染需要 2 个参数,首先是视图,然后是参数 示例:返回 $this->render('view', []);