0

问题: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,
    ));
}

当我使用 as$form->checkBoxList时,它工作正常。

4

3 回答 3

0

当您使用 生成按钮列表时$form->radioButtonList(),yii 会生成一个额外的隐藏输入字段。如果您以标准方式提交表单,则效果很好。

但是,当您为 ajax 提交序列化表单时,会.serialize()选择隐藏的<input>. 然后,它有两个用于所述单选按钮字段的值,并继续创建一个数组而不是单个值。

这会导致错误: strcmp() 期望参数 2 是字符串,给定数组

最好的解决方案是防止 yii 生成 hidden <input>。这可以很容易地通过添加

array('uncheckValue'=>NULL)

作为 HTML 选项。例如:

$form->radioButtonList($model,'viewer_format', $options, array('uncheckValue'=>NULL));
于 2014-04-12T12:36:14.340 回答
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'),
);
于 2012-11-19T13:11:22.000 回答
-1

您的渲染需要 2 个参数,首先是视图,然后是参数示例: return $this->render('view', []);

于 2021-02-22T13:22:17.707 回答