Yii2 - 使用活动dropDownList时renderSelectOptions方法中的未知错误

时间:2015-11-19 06:53:18

标签: php yii2

在使用activeForm的dropDownList期间调用上述方法时,我收到错误。奇怪的是,我已经以类似的方式制作了其他dropDownLists,并且他们正常工作。

错误是:

PHP Warning – yii\base\ErrorException
strcmp() expects parameter 2 to be string, object given

用于生成列表的_form代码如下:

$lista_unidades = ArrayHelper::map(Unidad::find()->where('institucion="Carabineros de Chile"')->asArray()->all(), 'id_unidad', 'nombre');

asort($lista_unidades);

$form->field($model, 'id_unidad_que_diligencia')->dropDownList($lista_unidades, ['prompt' => 'Seleccione...']);

Yii2提供有关错误的以下信息(图像链接):

FirstSecond

非常感谢任何帮助。

编辑:

模型类:

<?php

namespace app\models;

use Yii;
use yii\behaviors\TimestampBehavior;
use yii\db\Expression;

/**
 * This is the model class for table "orden_judicial".
 *
 * @property string $id_orden_judicial
 * @property string $causa_rit
 * @property string $causa_ruc
 * @property string $causa_rol
 * @property string $fecha_emision
 * @property string $tipo
 * @property string $estado
 * @property string $id_unidad_que_direcciona
 * @property string $id_unidad_que_diligencia
 * @property string $id_unidad_que_redirecciona
 *
 * @property AdjuntoOrdenJudicial[] $adjuntoOrdenJudicials
 * @property Aviso[] $avisos
 * @property Persona[] $rutPersonas
 * @property Dilgienciamiento[] $dilgienciamientos
 * @property Unidad $idUnidadQueDirecciona
 * @property Unidad $idUnidadQueDiligencia
 * @property Unidad $idUnidadQueRedirecciona
 */
class OrdenJudicial extends \yii\db\ActiveRecord
{
    /**
     * @inheritdoc
     */
     public static function tableName()
    {
        return 'orden_judicial';
    }

    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            [['fecha_emision', 'tipo', 'estado', 'id_unidad_que_direcciona', 'id_unidad_que_diligencia'], 'required'],
            [['fecha_emision'], 'safe'],
            [['id_unidad_que_direcciona', 'id_unidad_que_diligencia', 'id_unidad_que_redirecciona'], 'integer'],
            [['causa_rit', 'causa_ruc', 'causa_rol', 'tipo', 'estado'], 'string', 'max' => 100]
        ];
    }

    public function behaviors() {
        return [
                [
                    'class' => TimestampBehavior::className(),
                    'createdAtAttribute' => 'fecha_emision',
                    'updatedAtAttribute' => false,
                    'value' => new Expression('NOW()'),
                ],
        ];
    }

    /**
     * @inheritdoc
     */
    public function attributeLabels()
    {
        return [
            'id_orden_judicial' => 'Número de orden',
            'causa_rit' => 'Causa RIT',
            'causa_ruc' => 'Causa RUC',
            'causa_rol' => 'Causa ROL',
            'fecha_emision' => 'Fecha de Emisión',
            'tipo' => 'Tipo',
            'estado' => 'Estado',
            'id_unidad_que_direcciona' => 'Tribunal o Fiscalía',
            'id_unidad_que_diligencia' => 'Unidad Policial',
            'id_unidad_que_redirecciona' => 'Unidad que Redirecciona',
        ];
    }

    /**
     * @return \yii\db\ActiveQuery
     */
    public function getAdjuntoOrdenJudicials()
    {
        return $this->hasMany(AdjuntoOrdenJudicial::className(), ['id_orden_judicial' => 'id_orden_judicial']);
    }

    /**
     * @return \yii\db\ActiveQuery
     */
    public function getAvisos()
    {
        return $this->hasMany(Aviso::className(), ['id_orden_judicial' => 'id_orden_judicial']);
    }

    /**
     * @return \yii\db\ActiveQuery
     */
    public function getRutPersonas()
    {
        return $this->hasMany(Persona::className(), ['rut_persona' => 'rut_persona'])->viaTable('aviso', ['id_orden_judicial' => 'id_orden_judicial']);
    }

    /**
     * @return \yii\db\ActiveQuery
     */
    public function getDilgienciamientos()
    {
        return $this->hasMany(Dilgienciamiento::className(), ['id_orden_judicial' => 'id_orden_judicial']);
    }

    /**
     * @return \yii\db\ActiveQuery
     */
    public function getIdUnidadQueDirecciona()
    {
        return $this->hasOne(Unidad::className(), ['id_unidad' => 'id_unidad_que_direcciona']);
    }

    /**
     * @return \yii\db\ActiveQuery
     */
    public function getIdUnidadQueDiligencia()
    {
        return $this->hasOne(Unidad::className(), ['id_unidad' => 'id_unidad_que_diligencia']);
    }

    /**
     * @return \yii\db\ActiveQuery
     */
    public function getIdUnidadQueRedirecciona()
    {
        return $this->hasOne(Unidad::className(), ['id_unidad' => 'id_unidad_que_redirecciona']);
    }
}

Controller类及相关操作:

<?php

namespace app\controllers;

use Yii;
use app\models\OrdenJudicial;
use app\models\OrdenJudicialSearch;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;
use yii\filters\AccessControl;

/**
 * OrdenJudicialController implements the CRUD actions for OrdenJudicial model.
 */
class OrdenJudicialController extends Controller
{

    (...)

    public function actionCreate()
    {

        $model = new OrdenJudicial();

        $model->estado = "En Creacion";

        $idUnidadQueDiligencia = Yii::$app->getUser()->identity->getIdUnidad();

        $model->id_unidad_que_diligencia = $idUnidadQueDiligencia;

        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            return $this->redirect(['view', 'id' => $model->id_orden_judicial]);
        } else {
            return $this->render('create', [
                'model' => $model,
            ]);
        }
    }

    (...)
}

1 个答案:

答案 0 :(得分:0)

可能是您的id_unidad_que_diligencia对象不是单个值。

$idUnidadQueDiligencia = Yii::$app->getUser()->identity->getIdUnidad();

$model->id_unidad_que_diligencia = $idUnidadQueDiligencia;

尝试使用

来解决这种情况
var_dump($model->id_unidad_que_diligencia) 

然后如果不是一个扁平字符串值,则调整代码以获得正确的值。