在使用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提供有关错误的以下信息(图像链接):
非常感谢任何帮助。
编辑:
模型类:
<?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,
]);
}
}
(...)
}
答案 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)
然后如果不是一个扁平字符串值,则调整代码以获得正确的值。