问题: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->checkBoxList
使用时,它工作正常。
3条答案
按热度按时间3pvhb19x1#
调用RadioButtonList()时设置的第四个参数应该是键值对的数组,而不是数组的数组。我不确定您是否可以定义'labelOptions',因为它不是HTML标记。
出现该错误是因为Yii希望您的最终数组是键值对,但却发现'labelOptions'是一个数组,而不是字符串。
尝试以下内容:
或者甚至更好地使用css;
并且在视图中:
mfpqipee2#
当你用
$form->radioButtonList()
生成一个按钮列表时,yii会生成一个额外的隐藏输入字段。如果你以标准方式提交表单,这会很好。然而,当您序列化一个表单以提交 AJAX 时,
.serialize()
会提取隐藏的<input>
,然后它会为所说的单选按钮字段创建两个值,并继续创建一个数组而不是一个值。这会导致以下错误:strcmp()要求参数2为字符串,给定数组
最好的解决方案是防止yii生成隐藏的
<input>
。作为HTML选项。例如:
pgx2nnw83#
你的渲染需要2个参数,首先是视图,然后是参数示例:返回$this-〉render('视图',[]);